public override bool EventEvaluate(long timeElapse, GamePlay.Actor.GCenterData context) { if (Func != null) { return(Func.Invoke(timeElapse, context)); } return(false); }
public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context) { if (Func == null) { return(BehaviorStatus.Failure); } return(Func.Invoke(timeElapse, context)); }
public BehaviorStatus Tick(long timeElapse, GamePlay.Actor.GCenterData context) { if (Root == null) { return(BehaviorStatus.Failure); } return(Root.DataObject.Tick(timeElapse, context)); }
public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context) { mLastTime += timeElapse; if (mLastTime > WaitTime) { return(BehaviorStatus.Success); } return(BehaviorStatus.Running); }
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); } }
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); }
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); } }
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); }
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); }
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)); }
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); }
public override BehaviorStatus Update(long timeElapse, GamePlay.Actor.GCenterData context) { return(BehaviorStatus.Running); }
public virtual bool EventEvaluate(long timeElapse, GamePlay.Actor.GCenterData context) { return(false); }
public virtual bool Checking(long timeElapse, GamePlay.Actor.GCenterData context) { return(false); }
public BehaviorStatus Tick(long timeElapse, GamePlay.Actor.GCenterData context) { return(BehaviorStatus.Failure); }