1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-25 08:39:41 +00:00

Don't delete physics object if it was never created.

This commit is contained in:
cc9cii 2014-11-13 07:41:31 +11:00
parent 0e0ad97a91
commit ba1a42ec05
2 changed files with 5 additions and 2 deletions

View file

@ -93,6 +93,7 @@ void CSVRender::Object::update()
Ogre::Quaternion yr (Ogre::Radian (-reference.mPos.rot[1]), Ogre::Vector3::UNIT_Y); Ogre::Quaternion yr (Ogre::Radian (-reference.mPos.rot[1]), Ogre::Vector3::UNIT_Y);
Ogre::Quaternion zr (Ogre::Radian (-reference.mPos.rot[2]), Ogre::Vector3::UNIT_Z); Ogre::Quaternion zr (Ogre::Radian (-reference.mPos.rot[2]), Ogre::Vector3::UNIT_Z);
mPhysicsObject = mReferenceId;
mPhysics->addObject("meshes\\" + model, mBase->getName(), mReferenceId, reference.mScale, position, xr*yr*zr); mPhysics->addObject("meshes\\" + model, mBase->getName(), mReferenceId, reference.mScale, position, xr*yr*zr);
} }
} }
@ -134,7 +135,7 @@ const CSMWorld::CellRef& CSVRender::Object::getReference() const
CSVRender::Object::Object (const CSMWorld::Data& data, Ogre::SceneNode *cellNode, CSVRender::Object::Object (const CSMWorld::Data& data, Ogre::SceneNode *cellNode,
const std::string& id, bool referenceable, CSVWorld::PhysicsSystem *physics, const std::string& id, bool referenceable, CSVWorld::PhysicsSystem *physics,
bool forceBaseToZero) bool forceBaseToZero)
: mData (data), mBase (0), mForceBaseToZero (forceBaseToZero), mPhysics(physics) : mData (data), mBase (0), mForceBaseToZero (forceBaseToZero), mPhysics(physics), mPhysicsObject("")
{ {
mBase = cellNode->createChildSceneNode(); mBase = cellNode->createChildSceneNode();
@ -156,7 +157,8 @@ CSVRender::Object::~Object()
{ {
clear(); clear();
mPhysics->removeObject(mBase->getName()); if(mPhysicsObject != "")
mPhysics->removeObject(mBase->getName());
if (mBase) if (mBase)
mBase->getCreator()->destroySceneNode (mBase); mBase->getCreator()->destroySceneNode (mBase);

View file

@ -32,6 +32,7 @@ namespace CSVRender
NifOgre::ObjectScenePtr mObject; NifOgre::ObjectScenePtr mObject;
bool mForceBaseToZero; bool mForceBaseToZero;
CSVWorld::PhysicsSystem *mPhysics; CSVWorld::PhysicsSystem *mPhysics;
std::string mPhysicsObject;
/// Not implemented /// Not implemented
Object (const Object&); Object (const Object&);