1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-04-02 14:36:44 +00:00

Use only player's half extents

This commit is contained in:
elsid 2018-04-22 19:22:00 +03:00
parent fafba8ea0c
commit 0c8a7295e6
No known key found for this signature in database
GPG key ID: B845CB9FEE18AB40
2 changed files with 11 additions and 3 deletions

View file

@ -93,7 +93,8 @@ namespace
else if (const auto actor = physics.getActor(ptr)) else if (const auto actor = physics.getActor(ptr))
{ {
const auto navigator = MWBase::Environment::get().getWorld()->getNavigator(); 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) if (useAnim)
@ -260,12 +261,13 @@ namespace MWWorld
ListAndResetObjectsVisitor visitor; ListAndResetObjectsVisitor visitor;
(*iter)->forEach<ListAndResetObjectsVisitor>(visitor); (*iter)->forEach<ListAndResetObjectsVisitor>(visitor);
const auto playerHalfExtents = mPhysics->getHalfExtents(MWBase::Environment::get().getWorld()->getPlayerPtr());
for (const auto& ptr : visitor.mObjects) for (const auto& ptr : visitor.mObjects)
{ {
if (const auto object = mPhysics->getObject(ptr)) if (const auto object = mPhysics->getObject(ptr))
navigator->removeObject(reinterpret_cast<std::size_t>(object)); navigator->removeObject(reinterpret_cast<std::size_t>(object));
else if (const auto actor = mPhysics->getActor(ptr)) else if (const auto actor = mPhysics->getActor(ptr))
navigator->removeAgent(actor->getHalfExtents()); navigator->removeAgent(playerHalfExtents);
mPhysics->remove(ptr); mPhysics->remove(ptr);
} }
@ -676,7 +678,10 @@ namespace MWWorld
if (const auto object = mPhysics->getObject(ptr)) if (const auto object = mPhysics->getObject(ptr))
navigator->removeObject(reinterpret_cast<std::size_t>(object)); navigator->removeObject(reinterpret_cast<std::size_t>(object));
else if (const auto actor = mPhysics->getActor(ptr)) 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); mPhysics->remove(ptr);
mRendering.removeObject (ptr); mRendering.removeObject (ptr);
if (ptr.getClass().isActor()) if (ptr.getClass().isActor())

View file

@ -2313,6 +2313,7 @@ namespace MWWorld
{ {
// Remove the old CharacterController // Remove the old CharacterController
MWBase::Environment::get().getMechanicsManager()->remove(getPlayerPtr()); MWBase::Environment::get().getMechanicsManager()->remove(getPlayerPtr());
mNavigator->removeAgent(mPhysics->getHalfExtents(getPlayerPtr()));
mPhysics->remove(getPlayerPtr()); mPhysics->remove(getPlayerPtr());
mRendering->removePlayer(getPlayerPtr()); mRendering->removePlayer(getPlayerPtr());
@ -2347,6 +2348,8 @@ namespace MWWorld
mPhysics->addActor(getPlayerPtr(), model); mPhysics->addActor(getPlayerPtr(), model);
applyLoopingParticles(player); applyLoopingParticles(player);
mNavigator->addAgent(mPhysics->getHalfExtents(getPlayerPtr()));
} }
World::RestPermitted World::canRest () const World::RestPermitted World::canRest () const