public void Execute() { if (this.resetStates) { this.states = new Dictionary <int, NodeState>(); this.resetStates = false; } this.updateTime = Time.unscaledTime; Node.Return result = this.behaviorGraph.Execute(gameObject, this); switch (result) { case Node.Return.Success: this.Complete(); if (this.onComplete == OnComplete.RepeatForever || this.onComplete == OnComplete.RepeatWhileSuccess) { this.StartExecuting(); } break; case Node.Return.Fail: this.Complete(); if (this.onComplete == OnComplete.RepeatForever || this.onComplete == OnComplete.RepeatWhileFail) { this.StartExecuting(); } break; } }
// VIRTUAL METHODS: ----------------------------------------------------------------------- public override Node.Return Execute(Node node, GameObject invoker, Behavior behavior) { Node.Return result = base.Execute(node, invoker, behavior); switch (result) { case Node.Return.Fail: return(Node.Return.Success); case Node.Return.Success: return(Node.Return.Fail); default: return(result); } }
private Node ParseReturn() { var node = new Node.Return(); node.AddSpan(this.Expect(TokenKind.KeywordReturn).span); if (this.Current.kind != TokenKind.BraceClose && this.Current.kind != TokenKind.ParenClose && this.Current.kind != TokenKind.Comma && this.Current.kind != TokenKind.Semicolon) { node.expr = this.ParseExpr(); } return(node); }
// VIRTUAL METHODS: ----------------------------------------------------------------------- public override Node.Return Execute(Node node, GameObject invoker, Behavior behavior) { int instanceID = node.GetInstanceID(); int passCount = behavior.GetPassCount(instanceID); if (this.count <= 0 || passCount < this.count) { Node.Return result = base.Execute(node, invoker, behavior); if (result == Node.Return.Success || result == Node.Return.Fail) { behavior.SetPassCount(instanceID, passCount + 1); node.ResetOutputStates(invoker, behavior, true); } return(Node.Return.Running); } return(Node.Return.Success); }
// VIRTUAL METHODS: ----------------------------------------------------------------------- public override Node.Return Execute(Node node, GameObject invoker, Behavior behavior) { int instanceID = node.GetInstanceID(); int passCount = behavior.GetPassCount(instanceID); if (passCount > 0) { return(behavior.GetState(instanceID)); } Node.Return result = base.Execute(node, invoker, behavior); switch (result) { case Node.Return.Fail: case Node.Return.Success: behavior.SetPassCount(instanceID, passCount + 1); return(result); } return(Node.Return.Running); }
private void PaintRuntimeState(Rect rect) { if (BehaviorWindow.WINDOW == null) { return; } if (BehaviorWindow.WINDOW.behaviorGraphEditor == null) { return; } if (BehaviorWindow.WINDOW.runtimeBehavior == null) { return; } int instanceID = this.node.GetInstanceID(); Node.Return state = BehaviorWindow.WINDOW.runtimeBehavior.GetState(instanceID); if (state != Node.Return.None) { this.PaintNodeHighlight(rect, this.GetCurrentStateColor(COLOR_NONE)); } }
// VIRTUAL METHODS: ----------------------------------------------------------------------- public override Node.Return Execute(Node node, GameObject invoker, Behavior behavior) { int instanceID = node.GetInstanceID(); Node.Return state = behavior.GetState(instanceID); if (state == Node.Return.Fail) { return(Node.Return.Fail); } Node.Return result = base.Execute(node, invoker, behavior); switch (result) { case Node.Return.Fail: return(Node.Return.Fail); case Node.Return.Success: node.ResetOutputStates(invoker, behavior, true); break; } return(Node.Return.Running); }
protected Color GetCurrentStateColor(Color fallback, int instanceID = 0) { if (!EditorApplication.isPlaying) { return(fallback); } if (BehaviorWindow.WINDOW == null) { return(COLOR_NONE); } if (BehaviorWindow.WINDOW.behaviorGraphEditor == null) { return(COLOR_NONE); } if (BehaviorWindow.WINDOW.runtimeBehavior == null) { return(COLOR_NONE); } instanceID = (instanceID == 0 ? this.node.GetInstanceID() : instanceID); Node.Return state = BehaviorWindow.WINDOW.runtimeBehavior.GetState(instanceID); switch (state) { case Node.Return.Running: return(COLOR_RUNNING); case Node.Return.Success: return(COLOR_SUCCESS); case Node.Return.Fail: return(COLOR_FAIL); case Node.Return.None: return(COLOR_NONE); default: return(fallback); } }
// VIRTUAL METHODS: ----------------------------------------------------------------------- public override Node.Return Execute(Node node, GameObject invoker, Behavior behavior) { Node.Return result = base.Execute(node, invoker, behavior); return(result == Node.Return.Running ? result : Node.Return.Fail); }
// PUBLIC STATE METHODS: ------------------------------------------------------------------ public void SetState(int instanceID, Node.Return state) { this.RequireState(instanceID); this.states[instanceID].state = state; }