From f32e1790bcdf1b85e655d0a8ae34a45aa463ed4d Mon Sep 17 00:00:00 2001 From: elsid Date: Tue, 23 Mar 2021 23:48:11 +0100 Subject: [PATCH] Add half extents to AiEscord max distance For actors with big bounding box given constants may not work properly like it's not possible to get close enough to actor from a given angle to make it move. --- apps/openmw/mwmechanics/aiescort.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwmechanics/aiescort.cpp b/apps/openmw/mwmechanics/aiescort.cpp index 5dc1e44db..8c5230221 100644 --- a/apps/openmw/mwmechanics/aiescort.cpp +++ b/apps/openmw/mwmechanics/aiescort.cpp @@ -82,14 +82,16 @@ namespace MWMechanics mRemainingDuration = mDuration; return true; } - mMaxDist = 450; + const osg::Vec3f halfExtents = MWBase::Environment::get().getWorld()->getHalfExtents(actor); + mMaxDist = std::max(halfExtents.x(), std::max(halfExtents.y(), halfExtents.z())) + 450.0f; } else { // Stop moving if the player is too far away MWBase::Environment::get().getMechanicsManager()->playAnimationGroup(actor, "idle3", 0, 1); actor.getClass().getMovementSettings(actor).mPosition[1] = 0; - mMaxDist = 250; + const osg::Vec3f halfExtents = MWBase::Environment::get().getWorld()->getHalfExtents(actor); + mMaxDist = std::max(halfExtents.x(), std::max(halfExtents.y(), halfExtents.z())) + 250.0f; } return false;