fixed a bug in phyiscs update code

This commit is contained in:
Marc Zinnschlag 2011-03-22 13:48:31 +01:00
parent 91ea36509d
commit 7b5d24c853
2 changed files with 12 additions and 8 deletions

View file

@ -165,11 +165,15 @@ void MWScene::moveObject (const std::string& handle, const Ogre::Vector3& positi
if(updatePhysics)//TODO: is it an actor? if(updatePhysics)//TODO: is it an actor?
{ {
OEngine::Physic::RigidBody* body = eng->getRigidBody(handle); if (OEngine::Physic::RigidBody* body = eng->getRigidBody(handle))
{
// TODO very dirty hack to avoid crash during setup -> needs cleaning up to allow
// start positions others than 0, 0, 0
btTransform tr = body->getWorldTransform(); btTransform tr = body->getWorldTransform();
tr.setOrigin(btVector3(position.x,position.y,position.z)); tr.setOrigin(btVector3(position.x,position.y,position.z));
body->setWorldTransform(tr); body->setWorldTransform(tr);
} }
}
} }
void MWScene::rotateObject (const std::string& handle, const Ogre::Quaternion& rotation) void MWScene::rotateObject (const std::string& handle, const Ogre::Quaternion& rotation)

View file

@ -18,7 +18,7 @@ namespace MWWorld
bool DoingPhysics::isDoingPhysics() bool DoingPhysics::isDoingPhysics()
{ {
return sCounter>0 || sSuppress>0; return sCounter>0 && sSuppress==0;
} }
SuppressDoingPhysics::SuppressDoingPhysics() SuppressDoingPhysics::SuppressDoingPhysics()