private void Update() { if (!isRunning) { return; } float timePassed = Time.deltaTime; if (UseWaitSecondsRealTime) { timePassed = Time.unscaledDeltaTime; } currentInterval -= timePassed; intervalCounter += timePassed; if (currentInterval < 0f) { currentInterval = 0f; } if (intervalCounter >= TimerInterval) { OnIntervalElapsed.SafeInvoke(currentInterval); intervalCounter = 0f; } if (currentInterval <= 0f) { OnTimerElapsed.SafeInvoke(); isRunning = false; } }
/// <summary> /// Starts the timer /// </summary> /// <param name="ResetIfRunning">True to reset the countdown if it's already running</param> public override void StartTimer(bool ResetIfRunning = false) { if (isRunning) { if (ResetIfRunning) { currentInterval = Duration; } else { return; } } currentInterval = Duration; intervalCounter = 0f; isRunning = true; OnTimerStarted.SafeInvoke(); OnIntervalElapsed.SafeInvoke(currentInterval); }
private void Update() { if (!isRunning) { return; } float timePassed = Time.deltaTime; if (UseWaitSecondsRealTime) { timePassed = Time.unscaledDeltaTime; } secondsPassed += timePassed; intervalCounter += timePassed; if (intervalCounter >= NotificationInterval) { OnIntervalElapsed.SafeInvoke(secondsPassed); intervalCounter = 0f; } }