From 20777c1b2e3b348861510d7f615c6702e7957520 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 4 Oct 2014 20:37:35 +0200 Subject: [PATCH] Optimize physics shape scaling on cell load --- apps/openmw/mwworld/physicssystem.cpp | 4 ++-- apps/openmw/mwworld/scene.cpp | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwworld/physicssystem.cpp b/apps/openmw/mwworld/physicssystem.cpp index f35dba5874..cec6c6eb1c 100644 --- a/apps/openmw/mwworld/physicssystem.cpp +++ b/apps/openmw/mwworld/physicssystem.cpp @@ -661,9 +661,9 @@ namespace MWWorld Ogre::SceneNode* node = ptr.getRefData().getBaseNode(); handleToMesh[node->getName()] = mesh; mEngine->createAndAdjustRigidBody( - mesh, node->getName(), node->getScale().x, node->getPosition(), node->getOrientation(), 0, 0, false, placeable); + mesh, node->getName(), ptr.getCellRef().getScale(), node->getPosition(), node->getOrientation(), 0, 0, false, placeable); mEngine->createAndAdjustRigidBody( - mesh, node->getName(), node->getScale().x, node->getPosition(), node->getOrientation(), 0, 0, true, placeable); + mesh, node->getName(), ptr.getCellRef().getScale(), node->getPosition(), node->getOrientation(), 0, 0, true, placeable); } void PhysicsSystem::addActor (const Ptr& ptr) diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index c98485dc9a..6a25faf215 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -83,7 +83,12 @@ namespace ptr.getClass().insertObject (ptr, mPhysics); updateObjectLocalRotation(ptr, mPhysics, mRendering); - MWBase::Environment::get().getWorld()->scaleObject (ptr, ptr.getCellRef().getScale()); + if (ptr.getRefData().getBaseNode()) + { + float scale = ptr.getCellRef().getScale(); + ptr.getClass().adjustScale(ptr, scale); + mRendering.scaleObject(ptr, Ogre::Vector3(scale)); + } ptr.getClass().adjustPosition (ptr, false); } catch (const std::exception& e)