Esempio n. 1
0
    public virtual IEnumerator Run(CoroutineStateMachine stateMachine)
    {
        this.stateMachine = stateMachine;
        exit = false;

        if (this is IStateBeginCallback)
        {
            (this as IStateBeginCallback).StateBegin();
        }
        if (this is IStateBeginRoutine)
        {
            yield return((this as IStateBeginRoutine).StateBegin());
        }

        bool hasUpdateCallback = (this is IStateUpdateCallback);
        bool hasUpdateRoutine  = (this is IStateUpdateRoutine);

        while (!exit)
        {
            if (hasUpdateCallback)
            {
                ((IStateUpdateCallback)this).StateUpdate(stateMachine);
            }
            if (hasUpdateRoutine)
            {
                yield return((this as IStateUpdateRoutine).StateUpdate(stateMachine));
            }
            yield return(null);
        }


        if (this is IStateEndRoutine)
        {
            yield return((this as IStateEndRoutine).StateEnd());
        }
        if (this is IStateEndCallback)
        {
            (this as IStateEndCallback).StateEnd();
        }
    }
Esempio n. 2
0
 void Awake()
 {
     _machine = new CoroutineStateMachine();
 }