public override IEnumerator Run(InstructionGraph graph, InstructionStore variables, int iteration) { _status.Reset(); if (ResolveObject(variables, Object, out Object obj)) { if (obj is GameObject gameObject) { VariableBinding.UpdateBinding(gameObject, Group, WaitForCompletion ? _status : null); } else if (obj is InterfaceControl control) { VariableBinding.UpdateBinding(control.gameObject, Group, WaitForCompletion ? _status : null); foreach (var dependency in control.DependentObjects) { VariableBinding.UpdateBinding(dependency, Group, WaitForCompletion ? _status : null); } } else if (obj is Component component) { VariableBinding.UpdateBinding(component.gameObject, Group, WaitForCompletion ? _status : null); } } if (WaitForCompletion) { while (!_status.IsFinished()) { yield return(null); } } graph.GoTo(Next, nameof(Next)); }
protected override IEnumerator Run_(InstructionGraph graph, InstructionStore variables, int iteration) { var control = Control.GetControl <InterfaceControl>(this); _status.Reset(); if (control) { control.UpdateBindings(variables, Group, _status); } if (WaitForCompletion) { while (!_status.IsFinished()) { yield return(null); } } graph.GoTo(Next, variables.This, nameof(Next)); yield break; }