public void Simulate() { if (!root.CanExecute(this)) { return; } root.Execute(this); }
public NodeResult Execute(BehaviourTreeAgent agent) { if (!getWhileCondition()) { return(getSuccessCondition() ? NodeResult.Success : NodeResult.Failed); } var result = child.Execute(agent); if (result == NodeResult.Failed || result == NodeResult.Running) { return(result); } return(getSuccessCondition() ? NodeResult.Success : NodeResult.Failed); }
public void SimulateBehaviour() { var oldPos = Physical.Position; Brain.UpdatePercepts(Physical.Position); if (behaviourTree.CanExecute(agent)) { behaviourTree.Execute(agent); } var dir = Vector3.Normalize((Physical.Position - oldPos).ChangeY(0)); if (dir.Length() > 0.5f) { Physical.Rotation = Functions.CreateFromLookDir(dir.xna()).dx() * Quaternion.RotationAxis(Vector3.UnitY, MathHelper.PiOver2); Physical.Position = Physical.Position; } }