public void Update(float absoluteTime) { if (!Enabled) { this.absoluteTime = absoluteTime; PeriodRelativeTime = 0.0f; return; } PeriodRelativeTime = absoluteTime - this.absoluteTime; if (PeriodRelativeTime > Interval) { PeriodElapsed?.Invoke(this, absoluteTime); this.absoluteTime = absoluteTime; PeriodRelativeTime = 0.0f; ++PeriodElapsedCount; } }
/// <summary> /// Updates the specified absolute time. /// This method is responsible for calling the <see cref="PeriodElapsed"/> callback. /// This method has to be called at least once per frame to have frame exact callback evaluation. /// </summary> /// <param name="absoluteTime">The current absolute time.</param> public void Update(float absoluteTime) { if (!absoluteStartTime.HasValue) { absoluteStartTime = absoluteTime; } if (!Enabled) { absoluteStartTime = absoluteTime; PeriodRelativeTime = 0.0f; return; } PeriodRelativeTime = absoluteTime - absoluteStartTime.Value; if (PeriodRelativeTime > Period) { PeriodElapsed?.Invoke(this, absoluteTime); absoluteStartTime = absoluteTime; PeriodRelativeTime = 0.0f; ++PeriodElapsedCount; } }