diff --git a/apps/openmw/mwrender/creatures.hpp b/apps/openmw/mwrender/creatures.hpp index e884d5de4f..17946f0504 100644 --- a/apps/openmw/mwrender/creatures.hpp +++ b/apps/openmw/mwrender/creatures.hpp @@ -1,3 +1,5 @@ +#include + namespace MWRender{ class Creatures{ diff --git a/apps/openmw/mwrender/npcs.hpp b/apps/openmw/mwrender/npcs.hpp index 861be6fc96..c9701f1951 100644 --- a/apps/openmw/mwrender/npcs.hpp +++ b/apps/openmw/mwrender/npcs.hpp @@ -1,3 +1,4 @@ +#include namespace MWRender{ class Npcs{ diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 3ad011b932..ed32a8786f 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -1,9 +1,15 @@ #include "objects.hpp" +#include using namespace MWRender; void Objects::insertBegin (const MWWorld::Ptr& ptr, bool enabled, bool static_){ + ptr.getRefData().setBaseNode(mBase); + assert (!mInsert); + isStatic = static_; + // Create and place scene node for this object + mInsert = mBase->createChildSceneNode(); } void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh){ @@ -11,3 +17,4 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh){ void Objects::insertLight (const MWWorld::Ptr& ptr, float r, float g, float b, float radius){ } + diff --git a/apps/openmw/mwrender/objects.hpp b/apps/openmw/mwrender/objects.hpp index 75752284d6..e382fb05b2 100644 --- a/apps/openmw/mwrender/objects.hpp +++ b/apps/openmw/mwrender/objects.hpp @@ -2,13 +2,17 @@ #include "../mwworld/refdata.hpp" #include "../mwworld/ptr.hpp" +#include namespace MWRender{ class Objects{ private: OEngine::Render::OgreRenderer &rend; + Ogre::SceneNode *mBase; + Ogre::SceneNode *mInsert; + bool isStatic; public: - Objects(OEngine::Render::OgreRenderer& _rend): rend(_rend){} + Objects(OEngine::Render::OgreRenderer& _rend): rend(_rend){mBase = rend.getScene()->getRootSceneNode(); } ~Objects(){} void insertBegin (const MWWorld::Ptr& ptr, bool enabled, bool static_); void insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh); diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 61fe9bf179..952388fd41 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -1,4 +1,5 @@ #include "renderingmanager.hpp" +#include "objects.hpp" #include @@ -23,7 +24,7 @@ namespace MWRender { -RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const boost::filesystem::path& resDir, OEngine::Physic::PhysicEngine* engine) :rend(_rend), mDebugging(engine) +RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const boost::filesystem::path& resDir, OEngine::Physic::PhysicEngine* engine) :rend(_rend), mDebugging(engine), objects(rend) { @@ -58,8 +59,8 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const cameraPitchNode->attachObject(rend.getCamera()); mPlayer = new MWRender::Player (rend.getCamera(), playerNode->getName()); + //std::cout << "Three"; - } RenderingManager::~RenderingManager () diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 9f751959d9..e8989d7409 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -48,22 +48,7 @@ namespace MWRender class RenderingManager: private RenderingInterface { - OEngine::Render::OgreRenderer &rend; - Ogre::Camera* camera; - MWRender::Npcs npcs; - MWRender::Creatures creatures; - MWRender::Objects objects; - - /// Root node for all objects added to the scene. This is rotated so - /// that the OGRE coordinate system matches that used internally in - /// Morrowind. - Ogre::SceneNode *mwRoot; - Ogre::RaySceneQuery *mRaySceneQuery; - - OEngine::Physic::PhysicEngine* eng; - - MWRender::Player *mPlayer; - MWRender::Debugging mDebugging; + public: RenderingManager(OEngine::Render::OgreRenderer& _rend, const boost::filesystem::path& resDir, OEngine::Physic::PhysicEngine* engine); @@ -103,6 +88,22 @@ class RenderingManager: private RenderingInterface { private: SkyManager* mSkyManager; + OEngine::Render::OgreRenderer &rend; + Ogre::Camera* camera; + MWRender::Npcs npcs; + MWRender::Creatures creatures; + MWRender::Objects objects; + + /// Root node for all objects added to the scene. This is rotated so + /// that the OGRE coordinate system matches that used internally in + /// Morrowind. + Ogre::SceneNode *mwRoot; + Ogre::RaySceneQuery *mRaySceneQuery; + + OEngine::Physic::PhysicEngine* eng; + + MWRender::Player *mPlayer; + MWRender::Debugging mDebugging; };