public void End() { _cur?.Exit(); _pre = null; _cur = null; _dst = null; }
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); } } }
public void AddStage(StageBase <T> Stage, T NextStageID) { if (!Stages_.ContainsKey(Stage.StageID)) { Stages_.Add(Stage.StageID, Stage); Stage.SetPipeline(this); Stage.SetNextStageID(NextStageID); } }
private void TranslateTo(T NextID) { if (Stages_.ContainsKey(NextID)) { _dst = Stages_[NextID]; } else { TranslateTo(ErrorStageID_); } }