/// <summary> /// Highlights nodes that are being re-evaluated, like abort nodes. /// </summary> /// <param name="node"></param> private bool IsNodeObserving(BonsaiNode node) { Core.BehaviourNode behaviour = node.Behaviour; Core.BehaviourIterator itr = behaviour.Iterator; if (itr != null && itr.IsRunning) { var aborter = behaviour as Core.ConditionalAbort; return(aborter && aborter.IsObserving); } return(false); }
/// <summary> /// Highlights nodes that are being re-evaluated, like abort nodes. /// </summary> /// <param name="node"></param> private bool IsNodeEvaluating(BonsaiNode node) { if (!EditorApplication.isPlaying) { return(false); } Core.BehaviourIterator itr = node.Behaviour.Iterator; if (itr != null && itr.IsRunning) { var aborter = node.Behaviour as Core.ConditionalAbort; int index = itr.CurrentIndex; if (index != -1) { Core.BehaviourNode currentNode = Canvas.Tree.GetNode(index); // The current running node can be aborted by it. return(aborter && Core.ConditionalAbort.IsAbortable(aborter, currentNode)); } } return(false); }