Пример #1
0
 public override bool EventEvaluate(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     if (Func != null)
     {
         return(Func.Invoke(timeElapse, context));
     }
     return(false);
 }
Пример #2
0
 public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     if (Func == null)
     {
         return(BehaviorStatus.Failure);
     }
     return(Func.Invoke(timeElapse, context));
 }
Пример #3
0
 public BehaviorStatus Tick(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     if (Root == null)
     {
         return(BehaviorStatus.Failure);
     }
     return(Root.DataObject.Tick(timeElapse, context));
 }
Пример #4
0
 public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     mLastTime += timeElapse;
     if (mLastTime > WaitTime)
     {
         return(BehaviorStatus.Success);
     }
     return(BehaviorStatus.Running);
 }
Пример #5
0
        public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context)
        {
            if (mTickFunc != null)
            {
                mTickFunc(timeElapse, context);
            }
            if (Target == null || Host == null)
            {
                return(BehaviorStatus.Failure);
            }
            if (Host.Scene.NavQuery == null)
            {
                return(BehaviorStatus.Failure);
            }
            if (mCaculatePath)
            {
            }
            if (mOldPos != Target.Placement.Location)
            {
                //var path = Host.Scene.NavQuery?.FindStraightPath(Host.Placement.Location, Target.Placement.Location);
                //mPathFollowing.Path = path;
                int fullCount = Host.Scene.NavQuery.FindStraightPath(Host.Placement.Location, Target.Placement.Location, mPathFollowing.Path, ref mPathFollowing.PathPoint);
                if (fullCount != 0 && fullCount != mPathFollowing.PathPoint)
                {
                    mPathFollowing.Path = new Vector3[fullCount];
                    Host.Scene.NavQuery.FindStraightPath(Host.Placement.Location, Target.Placement.Location, mPathFollowing.Path, ref mPathFollowing.PathPoint);
                }
                mPathFollowing.IsArrive     = false;
                mPathFollowing.CurrentIndex = 0;
                mCaculatePath = true;
                mOldPos       = Target.Placement.Location;
            }

            var trans = mPathFollowing.DoSteering();

            if (trans.Force == Vector3.Zero)
            {
                //mMovement.Velocity = trans.Force;
                mMovement.DesireDirection = Vector3.Zero;
                mCaculatePath             = false;
                mPathFollowing.IsArrive   = true;
                return(Bricks.AI.BehaviorTree.BehaviorStatus.Success);
            }
            else
            {
                mMovement.DesireDirection = trans.Force.NormalizeValue;
                trans.Force.Normalize();
                trans.Force.Y         = 0;
                mMovement.Orientation = trans.Force.NormalizeValue;
                return(Bricks.AI.BehaviorTree.BehaviorStatus.Running);
            }
        }
Пример #6
0
 public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     if (WaitTimeEvaluateFunc != null)
     {
         WaitTime = WaitTimeEvaluateFunc.Invoke();
     }
     mLastTime += timeElapse;
     if (mLastTime > WaitTime)
     {
         return(BehaviorStatus.Success);
     }
     return(BehaviorStatus.Running);
 }
Пример #7
0
        public override bool Checking(long timeElapse, GamePlay.Actor.GCenterData context)
        {
            var result = Behavior.EventEvaluate(timeElapse, context);

            if (result != ConditionValue)
            {
                ConditionValue = result;
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #8
0
 public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     if (mRunningChild != null)
     {
         var status = mRunningChild.Tick(timeElapse, context);
         if (status != BehaviorStatus.Running)
         {
             mRunningChild = null;
         }
         if (status != BehaviorStatus.Failure)
         {
             return(status);
         }
         if (status == BehaviorStatus.Aborted)
         {
             return(BehaviorStatus.Aborted);
         }
     }
     else
     {
         if (mIndex >= mChildrenList.Count)
         {
             mIndex = 0;
         }
         if (mIndex < mChildrenList.Count)
         {
             var child  = mChildrenList[mIndex];
             var status = child.Tick(timeElapse, context);
             if (status == BehaviorStatus.Running)
             {
                 mRunningChild = child;
             }
             else
             {
                 mRunningChild = null;
             }
             mIndex++;
             if (status != BehaviorStatus.Failure)
             {
                 return(status);
             }
             if (status == BehaviorStatus.Aborted)
             {
                 return(BehaviorStatus.Aborted);
             }
         }
     }
     return(BehaviorStatus.Failure);
 }
Пример #9
0
 public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     if (mRunningChild != null)
     {
         var status = mRunningChild.Tick(timeElapse, context);
         if (status != BehaviorStatus.Running)
         {
             mRunningChild = null;
         }
         else
         {
             // return BehaviorStatus.Running;
         }
         if (status != BehaviorStatus.Failure)
         {
             //Reset();
             return(status);
         }
     }
     else
     {
         if (mIndex >= mChildrenList.Count)
         {
             mIndex = MathHelper.RandomRange(0, mChildrenList.Count - 1);
         }
         if (mIndex < mChildrenList.Count)
         {
             var child  = mChildrenList[mIndex];
             var status = child.Tick(timeElapse, context);
             if (status == BehaviorStatus.Running)
             {
                 mRunningChild = child;
                 //return BehaviorStatus.Running;
             }
             else
             {
                 mRunningChild = null;
             }
             mIndex = MathHelper.RandomRange(0, mChildrenList.Count - 1);
             if (status != BehaviorStatus.Failure)
             {
                 // Reset();
                 return(status);
             }
         }
     }
     return(BehaviorStatus.Failure);
 }
Пример #10
0
 public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     if (Func != null)
     {
         var result = Func.Invoke(timeElapse, context);
         if (result == false && Child.Status != BehaviorStatus.Running)
         {
             if (Inverse == false)
             {
                 return(BehaviorStatus.Failure);
             }
             else
             {
                 return(BehaviorStatus.Success);
             }
         }
     }
     return(Child.Tick(timeElapse, context));
 }
Пример #11
0
        public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context)
        {
            int iSuccessCount = 0, iFailureCount = 0;

            for (int i = 0; i < mChildrenList.Count; ++i)
            {
                var child = mChildrenList[i];
                if (!child.IsTerminated)
                {
                    child.Tick(timeElapse, context);
                }
                if (child.Status == BehaviorStatus.Success)
                {
                    ++iSuccessCount;
                    if (mSuccessPolicy == Policy.RequireOne)
                    {
                        return(BehaviorStatus.Success);
                    }
                }
                if (child.Status == BehaviorStatus.Failure)
                {
                    ++iFailureCount;
                    if (mSuccessPolicy == Policy.RequireOne)
                    {
                        return(BehaviorStatus.Failure);
                    }
                }
            }
            if (mFailurePolicy == Policy.RequireAll && iFailureCount == mChildrenList.Count)
            {
                return(BehaviorStatus.Failure);
            }
            if (mSuccessPolicy == Policy.RequireAll && iFailureCount == mChildrenList.Count)
            {
                return(BehaviorStatus.Success);
            }
            return(BehaviorStatus.Running);
        }
Пример #12
0
 public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     return(BehaviorStatus.Running);
 }
Пример #13
0
 public virtual bool EventEvaluate(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     return(false);
 }
Пример #14
0
 public virtual bool Checking(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     return(false);
 }
Пример #15
0
 public BehaviorStatus Tick(long timeElapse, GamePlay.Actor.GCenterData context)
 {
     return(BehaviorStatus.Failure);
 }