示例#1
0
 public void Start()
 {
     stopwatch.Reset();
     stopwatch.Start();
     timer.Start();
     OnUpsChanged?.Invoke(this, EventArgs.Empty);
 }
示例#2
0
        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;
            }
        }