Browse Source

Merge pull request #1357 from Azaezel/ChaseCache

followobject position caching
Daniel Buckmaster 10 years ago
parent
commit
807aad826f
2 changed files with 6 additions and 0 deletions
  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())
    if(!isServerObject())
       return;
       return;
 
 
+   if ((mFollowData.lastPos - obj->getPosition()).len()<mMoveTolerance)
+      return;
+
    if(setPathDestination(obj->getPosition()))
    if(setPathDestination(obj->getPosition()))
    {
    {
       clearCover();
       clearCover();
       mFollowData.object = obj;
       mFollowData.object = obj;
       mFollowData.radius = radius;
       mFollowData.radius = radius;
+      mFollowData.lastPos = obj->getPosition();
    }
    }
 }
 }
 
 

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

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