diff --git a/apps/openmw/mwrender/mwscene.cpp b/apps/openmw/mwrender/mwscene.cpp index 0cd2634c5..b902708cf 100644 --- a/apps/openmw/mwrender/mwscene.cpp +++ b/apps/openmw/mwrender/mwscene.cpp @@ -164,13 +164,17 @@ void MWScene::moveObject (const std::string& handle, const Ogre::Vector3& positi { rend.getScene()->getSceneNode(handle)->setPosition(position); - if(updatePhysics)//TODO: is it an actor? - { - OEngine::Physic::RigidBody* body = eng->getRigidBody(handle); - btTransform tr = body->getWorldTransform(); - tr.setOrigin(btVector3(position.x,position.y,position.z)); - body->setWorldTransform(tr); - } + if(updatePhysics)//TODO: is it an actor? + { + 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(); + tr.setOrigin(btVector3(position.x,position.y,position.z)); + body->setWorldTransform(tr); + } + } } void MWScene::rotateObject (const std::string& handle, const Ogre::Quaternion& rotation) diff --git a/apps/openmw/mwworld/doingphysics.cpp b/apps/openmw/mwworld/doingphysics.cpp index 27fb27c57..84fb4e2ab 100644 --- a/apps/openmw/mwworld/doingphysics.cpp +++ b/apps/openmw/mwworld/doingphysics.cpp @@ -18,7 +18,7 @@ namespace MWWorld bool DoingPhysics::isDoingPhysics() { - return sCounter>0 || sSuppress>0; + return sCounter>0 && sSuppress==0; } SuppressDoingPhysics::SuppressDoingPhysics()