diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index 2626bc641c..492a22c904 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -93,7 +93,8 @@ namespace else if (const auto actor = physics.getActor(ptr)) { const auto navigator = MWBase::Environment::get().getWorld()->getNavigator(); - navigator->addAgent(actor->getHalfExtents()); + const auto playerHalfExtents = physics.getHalfExtents(MWBase::Environment::get().getWorld()->getPlayerPtr()); + navigator->addAgent(playerHalfExtents); } if (useAnim) @@ -260,12 +261,13 @@ namespace MWWorld ListAndResetObjectsVisitor visitor; (*iter)->forEach(visitor); + const auto playerHalfExtents = mPhysics->getHalfExtents(MWBase::Environment::get().getWorld()->getPlayerPtr()); for (const auto& ptr : visitor.mObjects) { if (const auto object = mPhysics->getObject(ptr)) navigator->removeObject(reinterpret_cast(object)); else if (const auto actor = mPhysics->getActor(ptr)) - navigator->removeAgent(actor->getHalfExtents()); + navigator->removeAgent(playerHalfExtents); mPhysics->remove(ptr); } @@ -676,7 +678,10 @@ namespace MWWorld if (const auto object = mPhysics->getObject(ptr)) navigator->removeObject(reinterpret_cast(object)); else if (const auto actor = mPhysics->getActor(ptr)) - navigator->removeAgent(actor->getHalfExtents()); + { + const auto playerHalfExtents = mPhysics->getHalfExtents(MWBase::Environment::get().getWorld()->getPlayerPtr()); + navigator->removeAgent(playerHalfExtents); + } mPhysics->remove(ptr); mRendering.removeObject (ptr); if (ptr.getClass().isActor()) diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index 322559e3bd..7d9f9559d1 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -2313,6 +2313,7 @@ namespace MWWorld { // Remove the old CharacterController MWBase::Environment::get().getMechanicsManager()->remove(getPlayerPtr()); + mNavigator->removeAgent(mPhysics->getHalfExtents(getPlayerPtr())); mPhysics->remove(getPlayerPtr()); mRendering->removePlayer(getPlayerPtr()); @@ -2347,6 +2348,8 @@ namespace MWWorld mPhysics->addActor(getPlayerPtr(), model); applyLoopingParticles(player); + + mNavigator->addAgent(mPhysics->getHalfExtents(getPlayerPtr())); } World::RestPermitted World::canRest () const