public void Start() { stopwatch.Reset(); stopwatch.Start(); timer.Start(); OnUpsChanged?.Invoke(this, EventArgs.Empty); }
private void Step() { long elapsedTime = stopwatch.ElapsedMilliseconds; stopwatch.Restart(); // Time between each simulation step in seconds. float delta = elapsedTime / 1000f; lastUpsTime += elapsedTime; ups++; if (lastUpsTime >= 1000) // Update counter. { ActualUps = ups; ups = 0; lastUpsTime = 0; OnUpsChanged?.Invoke(this, EventArgs.Empty); } SingleStep(delta); double interval = (stopwatch.ElapsedMilliseconds + OptimalTime); if (interval > 0) { timer.Interval = interval; } }