private void Update() { for (int i = clockDatas.Count - 1; i >= 0; --i) { ClockData clockData = clockDatas[i]; if (clockData != null) { if (clockData.waitTimeMS <= 0) { clockData.callBack.InvokeSafely(); clockDatas.Remove(clockData); } else { float deltaTime = clockData.bIgnoreTime ? Time.unscaledDeltaTime : Time.deltaTime; clockData.waitTimeMS += deltaTime; } } } }
void FixedUpdate() { if (IsFirstFixedUpdate) { if (Bridge != null && Bridge.Status == Status.Connected) { lock (MessageQueue) { MessageQueue.Clear(); } } IsFirstFixedUpdate = false; } var time = SimulatorManager.Instance.CurrentTime; if (time < LastTimestamp) { return; } var data = new ClockData() { Clock = time, }; latestData = data; if (Bridge != null && Bridge.Status == Status.Connected) { lock (MessageQueue) { MessageQueue.Enqueue(Tuple.Create(time, Time.fixedDeltaTime, (Action)(() => Publish(data, () => Sending = false)))); } } }
/// <summary> /// Called when a move is received. /// </summary> /// <param name="ws">The websocket.</param> /// <param name="message">The message.</param> private void OnMove(WebSocketBase ws, MMove message) { ProcessGameMessage(message); curClock = message.Data.Clock; OnGameMove?.Invoke(this, new LilaGameMoveEvent(Client, this, message.Data)); }
/// <summary> /// Called when the clock is updated. /// </summary> /// <param name="ws">The websocket.</param> /// <param name="message">The message.</param> private void OnClock(WebSocketBase ws, Messages.MClock message) { ProcessGameMessage(message); curClock = message.Data; }
private void Qlock_Loaded(object sender, RoutedEventArgs e) { ClockData.Run(); }