forked from teamnwah/openmw-tes3coop
make World::PhysicsSystem not depending on World::World
This commit is contained in:
parent
4b846a54f1
commit
52bf3af565
3 changed files with 14 additions and 7 deletions
|
@ -25,7 +25,7 @@ namespace MWWorld
|
|||
|
||||
}
|
||||
|
||||
void PhysicsSystem::doPhysics (float duration, MWWorld::World& world,
|
||||
std::vector< std::pair<const std::string*, Ogre::Vector3> > PhysicsSystem::doPhysics (float duration,
|
||||
const std::vector<std::pair<std::string, Ogre::Vector3> >& actors)
|
||||
{
|
||||
// stop changes to world from being reported back to the physics system
|
||||
|
@ -71,13 +71,15 @@ namespace MWWorld
|
|||
}
|
||||
mEngine->stepSimulation(duration);
|
||||
|
||||
std::vector< std::pair<const std::string*, Ogre::Vector3> > response;
|
||||
for(std::map<std::string,OEngine::Physic::PhysicActor*>::iterator it = mEngine->PhysicActorMap.begin(); it != mEngine->PhysicActorMap.end();it++)
|
||||
{
|
||||
OEngine::Physic::PhysicActor* act = it->second;
|
||||
btVector3 newPos = act->getPosition();
|
||||
MWWorld::Ptr ptr = world.getPtrViaHandle (it->first);
|
||||
world.moveObject (ptr, newPos.x(), newPos.y(), newPos.z());
|
||||
btVector3 newPos = it->second->getPosition();
|
||||
Ogre::Vector3 coord(newPos.x(), newPos.y(), newPos.z());
|
||||
|
||||
response.push_back(std::pair<const std::string*, Ogre::Vector3>(&it->first, coord));
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
void PhysicsSystem::addObject (const std::string& handle, const std::string& mesh,
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace MWWorld
|
|||
PhysicsSystem (OEngine::Render::OgreRenderer &_rend , OEngine::Physic::PhysicEngine* physEng);
|
||||
~PhysicsSystem ();
|
||||
|
||||
void doPhysics (float duration, MWWorld::World& world,
|
||||
std::vector< std::pair<const std::string*, Ogre::Vector3> > doPhysics (float duration,
|
||||
const std::vector<std::pair<std::string, Ogre::Vector3> >& actors);
|
||||
|
||||
void addObject (const std::string& handle, const std::string& mesh,
|
||||
|
|
|
@ -713,7 +713,12 @@ namespace MWWorld
|
|||
void World::doPhysics (const std::vector<std::pair<std::string, Ogre::Vector3> >& actors,
|
||||
float duration)
|
||||
{
|
||||
mPhysics->doPhysics (duration, *this, actors);
|
||||
std::vector< std::pair<const std::string*, Ogre::Vector3> > vectors = mPhysics->doPhysics (duration, actors);
|
||||
std::vector< std::pair<const std::string*, Ogre::Vector3> >::iterator it;
|
||||
for(it = vectors.begin(); it != vectors.end(); it++) {
|
||||
MWWorld::Ptr ptr = getPtrViaHandle (*it->first);
|
||||
moveObject (ptr, it->second.x, it->second.y, it->second.z);
|
||||
}
|
||||
}
|
||||
|
||||
bool World::toggleCollisionMode()
|
||||
|
|
Loading…
Reference in a new issue