public virtual void Play(Component caller, Action onCompleteCallback) { if (!gameObject.activeInHierarchy) { onCompleteCallback(); return; } _elapsedTime = 0; _caller = caller; _completeCallback = onCompleteCallback; _peName = name; name = "(delay)" + _peName; if (_delay <= 0) { _status = PeStatus.Active; PerformanceStart(); } else { _status = PeStatus.Delay; } if (SeqeuceType == SeqTypeEnum.Immidiate) { if (_caller != null && _completeCallback != null) { _completeCallback(); } } }
void OnUpdate() { if (_status == PeStatus.Delay) { _elapsedTime += _deltaTime; if (_elapsedTime > _delay) { _elapsedTime -= _delay; _status = PeStatus.Active; if (SeqeuceType == SeqTypeEnum.PerformanceStart) { if (_caller != null && _completeCallback != null) { _completeCallback(); } } PerformanceStart(); } } else if (_status == PeStatus.Active) { _elapsedTime += _deltaTime; PerformancUpdate(); } }
public virtual void PerformanceComplete() { if (_status != PeStatus.NotActive) { _status = PeStatus.NotActive; name = normalName; if (SeqeuceType == SeqTypeEnum.PerformanceComplete) { _onCompleteEvent.Invoke(); if (_caller != null && _completeCallback != null) { _completeCallback(); } } if (_destroyWhenComplete) { Destroy(gameObject); } } else { Debug.LogError("Performance complete [" + name + "] is not called in running mode"); } }