Parcourir la source

Merge pull request #1357 from Azaezel/ChaseCache

followobject position caching
Daniel Buckmaster il y a 10 ans
Parent
commit
807aad826f
2 fichiers modifiés avec 6 ajouts et 0 suppressions
  1. 4 0
      Engine/source/T3D/aiPlayer.cpp
  2. 2 0
      Engine/source/T3D/aiPlayer.h

+ 4 - 0
Engine/source/T3D/aiPlayer.cpp

@@ -827,11 +827,15 @@ void AIPlayer::followObject(SceneObject *obj, F32 radius)
    if(!isServerObject())
       return;
 
+   if ((mFollowData.lastPos - obj->getPosition()).len()<mMoveTolerance)
+      return;
+
    if(setPathDestination(obj->getPosition()))
    {
       clearCover();
       mFollowData.object = obj;
       mFollowData.radius = radius;
+      mFollowData.lastPos = obj->getPosition();
    }
 }
 

+ 2 - 0
Engine/source/T3D/aiPlayer.h

@@ -122,10 +122,12 @@ private:
       SimObjectPtr<SceneObject> object;
       /// Distance at whcih to follow.
       F32 radius;
+      Point3F lastPos;
       /// Default constructor.
       FollowData() : object(NULL)
       {
          radius = 5.0f;
+         lastPos = Point3F::Zero;
       }
    };