From ff941b596380cf091a998d7e1578f750fcc27861 Mon Sep 17 00:00:00 2001 From: gugus Date: Sat, 19 Feb 2011 17:59:40 +0100 Subject: [PATCH] add physic --- apps/openmw/engine.cpp | 3 ++- apps/openmw/engine.hpp | 2 ++ apps/openmw/mwworld/world.cpp | 11 ++++++++--- apps/openmw/mwworld/world.hpp | 6 +++++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index b78eb15820..c8e32df530 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -205,6 +205,7 @@ OMW::Engine::Engine() , mGuiManager (0) { MWClass::registerClasses(); + mPhysicEngine = new OEngine::Physic::PhysicEngine(); } OMW::Engine::~Engine() @@ -339,7 +340,7 @@ void OMW::Engine::go() loadBSA(); // Create the world - mEnvironment.mWorld = new MWWorld::World (mOgre, mDataDir, mMaster, mResDir, mNewGame, mEnvironment); + mEnvironment.mWorld = new MWWorld::World (mOgre, mPhysicEngine, mDataDir, mMaster, mResDir, mNewGame, mEnvironment); // Set up the GUI system mGuiManager = new OEngine::GUI::MyGUIManager(mOgre.getWindow(), mOgre.getScene(), false, cfgDir); diff --git a/apps/openmw/engine.hpp b/apps/openmw/engine.hpp index 5b636398c6..8dff580bd1 100644 --- a/apps/openmw/engine.hpp +++ b/apps/openmw/engine.hpp @@ -8,6 +8,7 @@ #include #include +#include #include #include "mwworld/environment.hpp" @@ -59,6 +60,7 @@ namespace OMW boost::filesystem::path mDataDir; boost::filesystem::path mResDir; OEngine::Render::OgreRenderer mOgre; + OEngine::Physic::PhysicEngine* mPhysicEngine; std::string mCellName; std::string mMaster; bool mDebug; diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 44a16aee71..9d975879e8 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -273,7 +273,7 @@ namespace MWWorld void World::unloadCell (CellRenderCollection::iterator iter) { ListHandles functor; - iter->first->forEach (functor); + iter->first->forEach(functor); { // silence annoying g++ warning for (std::vector::const_iterator iter (functor.mHandles.begin()); @@ -407,12 +407,13 @@ namespace MWWorld mCellChanged = true; } - World::World (OEngine::Render::OgreRenderer& renderer, const boost::filesystem::path& dataDir, + World::World (OEngine::Render::OgreRenderer& renderer, OEngine::Physic::PhysicEngine* physEng, const boost::filesystem::path& dataDir, const std::string& master, const boost::filesystem::path& resDir, bool newGame, Environment& environment) - : mSkyManager (0), mScene (renderer), mPlayer (0), mCurrentCell (0), mGlobalVariables (0), + : mSkyManager (0), mScene (renderer,physEng), mPlayer (0), mCurrentCell (0), mGlobalVariables (0), mSky (false), mCellChanged (false), mEnvironment (environment) { + mPhysEngine = physEng; boost::filesystem::path masterPath (dataDir); masterPath /= master; @@ -436,6 +437,8 @@ namespace MWWorld mSkyManager = MWRender::SkyManager::create(renderer.getWindow(), mScene.getCamera(), resDir); + + mPhysEngine = new OEngine::Physic::PhysicEngine(); } World::~World() @@ -451,6 +454,8 @@ namespace MWWorld delete mPlayer; delete mSkyManager; delete mGlobalVariables; + + delete mPhysEngine; } MWWorld::Player& World::getPlayer() diff --git a/apps/openmw/mwworld/world.hpp b/apps/openmw/mwworld/world.hpp index 15b6df233b..9ae1e9510f 100644 --- a/apps/openmw/mwworld/world.hpp +++ b/apps/openmw/mwworld/world.hpp @@ -14,6 +14,8 @@ #include "ptr.hpp" #include "globals.hpp" +#include "openengine\bullet\physic.hpp" + namespace Ogre { class Vector3; @@ -68,6 +70,8 @@ namespace MWWorld bool mCellChanged; Environment& mEnvironment; + OEngine::Physic::PhysicEngine* mPhysEngine; + // not implemented World (const World&); World& operator= (const World&); @@ -98,7 +102,7 @@ namespace MWWorld /// interior cell. public: - World (OEngine::Render::OgreRenderer& renderer, const boost::filesystem::path& dataDir, + World (OEngine::Render::OgreRenderer& renderer, OEngine::Physic::PhysicEngine* physEng, const boost::filesystem::path& dataDir, const std::string& master, const boost::filesystem::path& resDir, bool newGame, Environment& environment);