Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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;
        }