diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 4d3dace037..c41c089c65 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -16,7 +16,7 @@ set(GAME_HEADER source_group(game FILES ${GAME} ${GAME_HEADER}) add_openmw_dir (mwrender - renderingmanager debugging cellimp interior exterior sky player npcs creatures objects + renderingmanager debugging cellimp interior exterior sky player npcs creatures objects renderinginterface ) add_openmw_dir (mwinput diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 0632255be5..b9147d75dd 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -2,8 +2,9 @@ #include #include -using namespace MWRender; using namespace Ogre; +using namespace MWRender; + bool Objects::lightConst = false; float Objects::lightConstValue = 0.0f; @@ -159,10 +160,10 @@ void Objects::removeCell(const MWWorld::Ptr& ptr){ sg = 0; } } -void Objects::buildStaticGeometry(const MWWorld::Ptr& ptr){ - if(mSG.find(ptr.getCell()) != mSG.end()) +void Objects::buildStaticGeometry(ESMS::CellStore& cell){ + if(mSG.find(&cell) != mSG.end()) { - Ogre::StaticGeometry* sg = mSG[ptr.getCell()]; + Ogre::StaticGeometry* sg = mSG[&cell]; sg->build(); } } diff --git a/apps/openmw/mwrender/objects.hpp b/apps/openmw/mwrender/objects.hpp index ebb52906a7..e830d09937 100644 --- a/apps/openmw/mwrender/objects.hpp +++ b/apps/openmw/mwrender/objects.hpp @@ -5,8 +5,8 @@ #include namespace MWRender{ + class Objects{ -private: OEngine::Render::OgreRenderer &mRend; std::map mCellSceneNodes; std::map mSG; @@ -34,7 +34,7 @@ public: void insertLight (const MWWorld::Ptr& ptr, float r, float g, float b, float radius); void deleteObject (const std::string& handle); void removeCell(const MWWorld::Ptr& ptr); - void buildStaticGeometry(const MWWorld::Ptr& ptr); + void buildStaticGeometry(ESMS::CellStore &cell); /// insert a light related to the most recent insertBegin call. diff --git a/apps/openmw/mwrender/renderinginterface.hpp b/apps/openmw/mwrender/renderinginterface.hpp new file mode 100644 index 0000000000..28f3b61fcc --- /dev/null +++ b/apps/openmw/mwrender/renderinginterface.hpp @@ -0,0 +1,12 @@ +#include "objects.hpp" +#include "npcs.hpp" +#include "creatures.hpp" +namespace MWRender{ +class RenderingInterface{ + public: + virtual MWRender::Npcs& getNPCs() = 0; + virtual MWRender::Creatures& getCreatures() = 0; + virtual MWRender::Objects& getObjects() = 0; + virtual MWRender::Player& getPlayer() = 0; + }; +} \ No newline at end of file diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index b07251f53f..c21ce8a43a 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -1,5 +1,4 @@ #include "renderingmanager.hpp" -#include "objects.hpp" #include diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 0d2375febe..16e8e5af41 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -4,6 +4,7 @@ #include "sky.hpp" #include "debugging.hpp" +#include "renderinginterface.hpp" #include #include @@ -15,9 +16,8 @@ #include "../mwworld/ptr.hpp" #include -#include "objects.hpp" -#include "npcs.hpp" -#include "creatures.hpp" + + namespace Ogre { @@ -38,13 +38,7 @@ namespace MWWorld namespace MWRender { class Player; - class RenderingInterface{ - public: - virtual MWRender::Npcs& getNPCs(); - virtual MWRender::Creatures& getCreatures(); - virtual MWRender::Objects& getObjects(); - virtual MWRender::Player& getPlayer(); - }; + class RenderingManager: private RenderingInterface {