diff --git a/LoadMap/main.cpp b/LoadMap/main.cpp index d9988b9..495c097 100644 --- a/LoadMap/main.cpp +++ b/LoadMap/main.cpp @@ -60,7 +60,7 @@ int main(int argc, char *argv[]) - auto pScene = GetSceneCore()->GetSceneGraphManager()->CreateSceneGraph(ISceneGraph::SCENEGRAPH_3D); + auto pScene = GetSceneCore()->GetSceneGraphManager()->CreateSceneGraph(ISceneGraph::SCENEGRAPH_USER); //pScene->GetMap()->GetSpaceEnv()->SetMilkywayVisible(false); // for(auto one:pScene->GetMap()->GetMapLayers()) // { diff --git a/LoadMap/mainwindow.cpp b/LoadMap/mainwindow.cpp index 015d2a8..1e9dc99 100644 --- a/LoadMap/mainwindow.cpp +++ b/LoadMap/mainwindow.cpp @@ -119,8 +119,8 @@ void MainWindow::on_action_triggered() IMapLocation* aaaa = dynamic_cast(m_pSceneGraph->GetPlot()->CreateSceneNode("IMapLocation")); aaaa->SetSceneNode(pSceneRootaaaa); pSceneRootaaaa->AddSceneNode(pCircle->GetMapSceneNode()); - IMapLayer* m_pLayerTest = m_pSceneGraph->GetMap()->CreateLayer("test"); - m_pLayerTest->AddSceneNode(aaaa); +// IMapLayer* m_pLayerTest = m_pSceneGraph->GetMap()->CreateLayer("test"); +// m_pLayerTest->AddSceneNode(aaaa); // CMapRectange* pRectangle = new CMapRectange(m_pSceneGraph); @@ -182,7 +182,7 @@ void MainWindow::on_action_triggered() pHudLayout = dynamic_cast(m_pSceneGraph->GetPlot()->CreateSceneNode("IHudLayout")); pHudText = dynamic_cast(m_pSceneGraph->GetPlot()->CreateSceneNode("IHudText")); -// m_pSceneGraph->GetMainWindow()->GetMainViewPoint()->GetHud()->AddHudNode(pHudLayout); + m_pSceneGraph->GetMainWindow()->GetMainViewPoint()->GetHud()->AddHudNode(pHudLayout); auto pHudImage = dynamic_cast(m_pSceneGraph->GetPlot()->CreateSceneNode("IHudImage")); pHudImage->SetImage("Image/ship.png"); @@ -323,7 +323,7 @@ void MainWindow::on_action_triggered() pFlash->SetFlashFreq(0.5); pFlash->SetFlashColor(color); pLod->AddSceneNode(pScal); -// m_pSceneGraph->GetRoot()->AddSceneNode(pModel); + m_pSceneGraph->GetRoot()->AddSceneNode(pModel); // ILabel* pLabel = dynamic_cast(m_pSceneGraph->GetPlot()->CreateSceneNode("ILabel")); // pLabel->SetCanPick(true); @@ -349,8 +349,8 @@ void MainWindow::on_action_triggered() vLevelInfo.push_back(1e6); pLod->SetLevelsInfo(vLevelInfo); -// m_pSceneGraph->GetRoot()->AddSceneNode(pSceneRoot); -// return; + m_pSceneGraph->GetRoot()->AddSceneNode(pSceneRoot); + return; m_pLayer = m_pSceneGraph->GetMap()->CreateLayer("test"); pEarthLocation = dynamic_cast(m_pSceneGraph->GetPlot()->CreateSceneNode("IMapLocation")); // m_pLayer->AddSceneNode(pEarthLocation); diff --git a/SceneCore/SceneGraph/DealViewPortChange.h b/SceneCore/SceneGraph/DealViewPortChange.h index 892f14f..b034ff7 100644 --- a/SceneCore/SceneGraph/DealViewPortChange.h +++ b/SceneCore/SceneGraph/DealViewPortChange.h @@ -104,10 +104,10 @@ class ChangeViewPoint:public osg::Operation }; /// 更改视点 -class HomeViewPoint:public osg::Operation +class HomeViewPointOperation:public osg::Operation { public: - HomeViewPoint(osgGA::CameraManipulator* pManipulator):m_pManipulator(pManipulator){} + HomeViewPointOperation(osgGA::CameraManipulator* pManipulator):m_pManipulator(pManipulator){} void operator()(osg::Object*) { diff --git a/SceneCore/SceneGraph/QtViewPort.cpp b/SceneCore/SceneGraph/QtViewPort.cpp index 5225edf..87f265d 100644 --- a/SceneCore/SceneGraph/QtViewPort.cpp +++ b/SceneCore/SceneGraph/QtViewPort.cpp @@ -343,27 +343,26 @@ void QtViewPort::FrameEvent() } m_bViewPointChanged=false; } +} - if(m_bBackHome) +void QtViewPort::HomeViewPoint() +{ + switch(m_emType) { - switch(m_emType) - { - case View_3DMap: - m_p3DEarthManipulator->home(0.); - break; - case View_2DMap: - m_p2DEarthManipulator->home(0.); - break; - case View_Node: - m_pTrackManipulator->home(0.); - break; - case View_Osg: - m_pTrackManipulator->home(0.); - break; - default: - break; - } - m_bBackHome=false; + case View_3DMap: + m_pRender->AddUpdateOperation(new HomeViewPointOperation(m_p3DEarthManipulator)); + break; + case View_2DMap: + m_pRender->AddUpdateOperation(new HomeViewPointOperation(m_p2DEarthManipulator)); + break; + case View_Node: + m_pRender->AddUpdateOperation(new HomeViewPointOperation(m_pTrackManipulator)); + break; + case View_Osg: + m_pRender->AddUpdateOperation(new HomeViewPointOperation(m_pSelfManipulator)); + break; + default: + break; } } diff --git a/SceneCore/SceneGraph/QtViewPort.h b/SceneCore/SceneGraph/QtViewPort.h index 0b6e518..3932c74 100644 --- a/SceneCore/SceneGraph/QtViewPort.h +++ b/SceneCore/SceneGraph/QtViewPort.h @@ -52,7 +52,7 @@ class QtViewPort :public IViewPort,public IOsgViewPoint /** * @brief 回到Home视点 */ - void HomeViewPoint(){m_bBackHome=true;} + void HomeViewPoint(); protected: /// 立体显示模式更改 void StereoChanged(){m_bStereoChanged=true;} @@ -72,7 +72,7 @@ class QtViewPort :public IViewPort,public IOsgViewPoint osg::ref_ptr m_p3DEarthManipulator; ///三维地图操作器 osg::ref_ptr m_pSelfManipulator; /// 没有地图的操作器 osg::ref_ptr m_pTrackManipulator; /// 跟踪操作器 - ViewPointType m_emType=View_User; + ViewPointType m_emType=View_Osg; ViewPointType m_emPreType; double m_dTimes=0.; SceneViewPoint m_stViewPoint; @@ -83,7 +83,6 @@ class QtViewPort :public IViewPort,public IOsgViewPoint bool m_bStereoChanged=false; bool m_bHomePointChanged=false; /// home视点更改 bool m_bViewPointChanged=false; /// 视点更改 - bool m_bBackHome=false; }; #endif // QT_VIEWPORT_H