From 994420aa5785dccc7517207b4a0c27121b2a0310 Mon Sep 17 00:00:00 2001 From: cc9cii Date: Tue, 14 Oct 2014 13:21:43 +1100 Subject: [PATCH] Singleton wrapper for Ogre OverlaySystem. --- apps/opencs/view/render/overlaysystem.hpp | 36 +++++++++++++++++++++++ apps/opencs/view/render/scenewidget.cpp | 7 ++--- apps/opencs/view/render/scenewidget.hpp | 2 +- 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 apps/opencs/view/render/overlaysystem.hpp diff --git a/apps/opencs/view/render/overlaysystem.hpp b/apps/opencs/view/render/overlaysystem.hpp new file mode 100644 index 0000000000..64f95975e7 --- /dev/null +++ b/apps/opencs/view/render/overlaysystem.hpp @@ -0,0 +1,36 @@ +#ifndef OPENCS_VIEW_OVERLAYSYSTEM_H +#define OPENCS_VIEW_OVERLAYSYSTEM_H + +#include + +namespace CSVRender +{ + class OverlaySystem + { + Ogre::OverlaySystem *mOverlaySystem; + + OverlaySystem() { + mOverlaySystem = new Ogre::OverlaySystem(); + } + + ~OverlaySystem() { + delete mOverlaySystem; + } + + OverlaySystem(OverlaySystem const&); + void operator=(OverlaySystem const&); + + public: + + static OverlaySystem &instance() { + static OverlaySystem mInstance; + return mInstance; + } + + Ogre::OverlaySystem *get() { + return mOverlaySystem; + } + }; +} + +#endif // OPENCS_VIEW_OVERLAYSYSTEM_H diff --git a/apps/opencs/view/render/scenewidget.cpp b/apps/opencs/view/render/scenewidget.cpp index 5e5a929ec7..2c0893ce01 100644 --- a/apps/opencs/view/render/scenewidget.cpp +++ b/apps/opencs/view/render/scenewidget.cpp @@ -11,18 +11,16 @@ #include #include #include -#include #include "../widget/scenetoolmode.hpp" #include "../../model/settings/usersettings.hpp" #include "navigation.hpp" #include "lighting.hpp" +#include "overlaysystem.hpp" namespace CSVRender { - Ogre::OverlaySystem *SceneWidget::mOverlaySystem = NULL; - SceneWidget::SceneWidget(QWidget *parent) : QWidget(parent) , mCamera(NULL) @@ -62,8 +60,7 @@ namespace CSVRender setLighting (&mLightingDay); - if(!mOverlaySystem) - mOverlaySystem = new Ogre::OverlaySystem(); + mOverlaySystem = OverlaySystem::instance().get(); mSceneMgr->addRenderQueueListener(mOverlaySystem); QTimer *timer = new QTimer (this); diff --git a/apps/opencs/view/render/scenewidget.hpp b/apps/opencs/view/render/scenewidget.hpp index f53e935f41..1adbf3f173 100644 --- a/apps/opencs/view/render/scenewidget.hpp +++ b/apps/opencs/view/render/scenewidget.hpp @@ -97,7 +97,7 @@ namespace CSVRender Ogre::SceneManager* mSceneMgr; Ogre::RenderWindow* mWindow; Ogre::Viewport *mViewport; - static Ogre::OverlaySystem *mOverlaySystem; + Ogre::OverlaySystem *mOverlaySystem; Navigation *mNavigation; Lighting *mLighting;