public void UnregisterSimTimeObserver(ISimTimeObserver observer) { int num = this.observers.IndexOf(observer); if (num >= 0) { this.observers.RemoveAt(num); this.miter.OnRemove(num); } }
public void RegisterSimTimeObserver(ISimTimeObserver observer) { if (observer == null) { return; } if (this.observers.IndexOf(observer) < 0) { this.observers.Add(observer); } }
public void OnUpdate() { uint num = this.Now(); uint num2 = (num >= this.timeLast) ? (num - this.timeLast) : (num + 60000u - this.timeLast); this.timeLast = num; num2 *= this.scale; this.timeAccumulator += num2; float realTimeSinceStartUp = UnityUtils.GetRealTimeSinceStartUp(); int num3 = 0; while (this.timeAccumulator >= this.timePerFrame) { this.miter.Init(this.observers); while (this.miter.Active()) { ISimTimeObserver simTimeObserver = this.observers[this.miter.Index]; simTimeObserver.OnSimTime(this.timePerFrame); this.miter.Next(); } this.miter.Reset(); this.frameCount += 1u; this.timeAccumulator -= this.timePerFrame; if ((long)(++num3) == (long)((ulong)this.scale)) { if (UnityUtils.GetRealTimeSinceStartUp() - realTimeSinceStartUp > 0.0055f) { break; } } else if ((long)num3 == (long)((ulong)(this.scale + 1u))) { break; } } if (this.timeAccumulator > this.maxLag) { this.timeAccumulator = 0u; } }