From ebdc21288648b8a2176e4328f0b9e1a8856bd136 Mon Sep 17 00:00:00 2001 From: Aesylwinn Date: Thu, 10 Mar 2016 16:56:14 -0500 Subject: [PATCH] Moved selectNavigationMode to SceneWidget class, centralized camera selection. --- apps/opencs/view/render/pagedworldspacewidget.cpp | 4 +--- apps/opencs/view/render/previewwidget.cpp | 4 +--- apps/opencs/view/render/scenewidget.cpp | 15 +++++++++++++++ apps/opencs/view/render/scenewidget.hpp | 2 ++ .../view/render/unpagedworldspacewidget.cpp | 2 +- apps/opencs/view/render/worldspacewidget.cpp | 14 +------------- apps/opencs/view/render/worldspacewidget.hpp | 2 -- 7 files changed, 21 insertions(+), 22 deletions(-) diff --git a/apps/opencs/view/render/pagedworldspacewidget.cpp b/apps/opencs/view/render/pagedworldspacewidget.cpp index d96f366927..c0861d3516 100644 --- a/apps/opencs/view/render/pagedworldspacewidget.cpp +++ b/apps/opencs/view/render/pagedworldspacewidget.cpp @@ -6,8 +6,6 @@ #include #include -#include - #include #include "../../model/world/tablemimedata.hpp" @@ -117,7 +115,7 @@ bool CSVRender::PagedWorldspaceWidget::adjustCells() /// \todo do not overwrite manipulator object /// \todo move code to useViewHint function if (modified && wasEmpty) - mView->setCameraManipulator(new osgGA::TrackballManipulator); + selectNavigationMode("trackball"); return modified; } diff --git a/apps/opencs/view/render/previewwidget.cpp b/apps/opencs/view/render/previewwidget.cpp index a03b277d30..7b36451351 100644 --- a/apps/opencs/view/render/previewwidget.cpp +++ b/apps/opencs/view/render/previewwidget.cpp @@ -1,7 +1,5 @@ #include "previewwidget.hpp" -#include - #include "../../model/world/data.hpp" #include "../../model/world/idtable.hpp" @@ -9,7 +7,7 @@ CSVRender::PreviewWidget::PreviewWidget (CSMWorld::Data& data, const std::string& id, bool referenceable, QWidget *parent) : SceneWidget (data.getResourceSystem(), parent), mData (data), mObject(data, mRootNode, id, referenceable) { - mView->setCameraManipulator(new osgGA::TrackballManipulator); + selectNavigationMode("trackball"); QAbstractItemModel *referenceables = mData.getTableModel (CSMWorld::UniversalId::Type_Referenceables); diff --git a/apps/opencs/view/render/scenewidget.cpp b/apps/opencs/view/render/scenewidget.cpp index ff6ae25516..6115a9bc3d 100644 --- a/apps/opencs/view/render/scenewidget.cpp +++ b/apps/opencs/view/render/scenewidget.cpp @@ -12,6 +12,9 @@ #include #include +#include +#include + #include #include #include @@ -282,6 +285,18 @@ void SceneWidget::settingChanged (const CSMPrefs::Setting *setting) storeMappingSetting(setting); } +void SceneWidget::selectNavigationMode (const std::string& mode) +{ + if (mode=="1st") + mView->setCameraManipulator(new osgGA::FirstPersonManipulator); + else if (mode=="free") + mView->setCameraManipulator(new osgGA::FirstPersonManipulator); + else if (mode=="orbit") + mView->setCameraManipulator(new osgGA::OrbitManipulator); + else if (mode=="trackball") + mView->setCameraManipulator(new osgGA::TrackballManipulator); +} + bool SceneWidget::storeMappingSetting (const CSMPrefs::Setting *setting) { if (setting->getParent()->getKey()!="3D Scene Input") diff --git a/apps/opencs/view/render/scenewidget.hpp b/apps/opencs/view/render/scenewidget.hpp index 8d17fb8a5e..6870c06abc 100644 --- a/apps/opencs/view/render/scenewidget.hpp +++ b/apps/opencs/view/render/scenewidget.hpp @@ -110,6 +110,8 @@ namespace CSVRender virtual void settingChanged (const CSMPrefs::Setting *setting); + void selectNavigationMode (const std::string& mode); + private slots: void selectLightingMode (const std::string& mode); diff --git a/apps/opencs/view/render/unpagedworldspacewidget.cpp b/apps/opencs/view/render/unpagedworldspacewidget.cpp index 16c28cf930..9c2557438c 100644 --- a/apps/opencs/view/render/unpagedworldspacewidget.cpp +++ b/apps/opencs/view/render/unpagedworldspacewidget.cpp @@ -51,7 +51,7 @@ CSVRender::UnpagedWorldspaceWidget::UnpagedWorldspaceWidget (const std::string& mCell.reset (new Cell (document.getData(), mRootNode, mCellId)); - mView->setCameraManipulator(new osgGA::TrackballManipulator); + selectNavigationMode("trackball"); } void CSVRender::UnpagedWorldspaceWidget::cellDataChanged (const QModelIndex& topLeft, diff --git a/apps/opencs/view/render/worldspacewidget.cpp b/apps/opencs/view/render/worldspacewidget.cpp index 70aaf7e85d..14253537d9 100644 --- a/apps/opencs/view/render/worldspacewidget.cpp +++ b/apps/opencs/view/render/worldspacewidget.cpp @@ -12,9 +12,6 @@ #include #include -#include -#include - #include #include "../../model/world/universalid.hpp" @@ -94,21 +91,12 @@ void CSVRender::WorldspaceWidget::settingChanged (const CSMPrefs::Setting *setti SceneWidget::settingChanged(setting); } -void CSVRender::WorldspaceWidget::selectNavigationMode (const std::string& mode) -{ - if (mode=="1st") - mView->setCameraManipulator(new osgGA::FirstPersonManipulator); - else if (mode=="free") - mView->setCameraManipulator(new osgGA::FirstPersonManipulator); - else if (mode=="orbit") - mView->setCameraManipulator(new osgGA::OrbitManipulator); -} void CSVRender::WorldspaceWidget::useViewHint (const std::string& hint) {} void CSVRender::WorldspaceWidget::selectDefaultNavigationMode() { - mView->setCameraManipulator(new osgGA::FirstPersonManipulator); + selectNavigationMode("1st"); } CSVWidget::SceneToolMode *CSVRender::WorldspaceWidget::makeNavigationSelector ( diff --git a/apps/opencs/view/render/worldspacewidget.hpp b/apps/opencs/view/render/worldspacewidget.hpp index 87f22581c6..36aae03290 100644 --- a/apps/opencs/view/render/worldspacewidget.hpp +++ b/apps/opencs/view/render/worldspacewidget.hpp @@ -213,8 +213,6 @@ namespace CSVRender private slots: - void selectNavigationMode (const std::string& mode); - virtual void referenceableDataChanged (const QModelIndex& topLeft, const QModelIndex& bottomRight) = 0;