Ejemplo n.º 1
0
 public void End()
 {
     _cur?.Exit();
     _pre = null;
     _cur = null;
     _dst = null;
 }
Ejemplo n.º 2
0
        public void Tick(float DeltaTime)
        {
            if (Stages_.Count == 0)
            {
                return;
            }

            if (_dst != null)
            {
                _cur?.Exit();

                _pre = _cur;
                _cur = _dst;
                _dst = null;

                _cur.Enter();
            }

            if (_cur != null)
            {
                _cur.Tick(DeltaTime);

                var Code = _cur.CheckStage();
                if (Code == StageCode.Failed)
                {
                    TranslateTo(ErrorStageID_);
                }
                else if (Code == StageCode.Succeeded)
                {
                    TranslateTo(_cur.NextStageID);
                }
            }
        }
Ejemplo n.º 3
0
 public void AddStage(StageBase <T> Stage, T NextStageID)
 {
     if (!Stages_.ContainsKey(Stage.StageID))
     {
         Stages_.Add(Stage.StageID, Stage);
         Stage.SetPipeline(this);
         Stage.SetNextStageID(NextStageID);
     }
 }
Ejemplo n.º 4
0
 private void TranslateTo(T NextID)
 {
     if (Stages_.ContainsKey(NextID))
     {
         _dst = Stages_[NextID];
     }
     else
     {
         TranslateTo(ErrorStageID_);
     }
 }