public BehaviorResult Behave(AIContext context) { writeDebugInfo(Environment.NewLine + "Invoking " + debugName); behaviorResult = decoratedNode.Behave(context); writeDebugInfo(debugName + " execution terminated: " + behaviorResult); OnBehaved?.Invoke(this, new BehaviorInvokationEventArgs(behaviorResult)); return(behaviorResult); }
public BehaviorResult Behave(AIContext context) { if (behaviorResult == BehaviorResult.Failure) { InvokeAndReturn(); } behaviorResult = decoratedNode.Behave(context); if (behaviorResult == BehaviorResult.Success) { decoratedNode = repeatedDecoratedNode(); behaviorResult = BehaviorResult.Running; } return(InvokeAndReturn()); }
public BehaviorResult Behave(AIContext context) { if (behaviorResult != BehaviorResult.Running) { return(InvokeAndReturn()); } switch (decoratedNode.Behave(context)) { case BehaviorResult.Success: case BehaviorResult.Failure: behaviorResult = BehaviorResult.Success; break; } return(InvokeAndReturn()); }