protected override void UpdateInternal(float unscaledDeltaTime) { if (m_Settings.bypass) { return; } lock (m_StreamEvents) { m_Counter = 0; while (m_Counter < m_Settings.limit && m_StreamQueue.TryDequeue(out var stream)) { if (!m_StreamEvents.TryGetValue(stream, out var eventType)) { Debug.LogError($"StreamMessageType not found for {stream.ToString()}"); } // do nothing if the original message type has been cancelled, do not count towards limit if (eventType.HasValue) { m_StreamOutput.SendStreamEvent(stream, eventType.Value); ++m_Counter; } m_StreamEvents.Remove(stream); } } if (m_State == State.WaitingToFinish && m_StreamQueue.IsEmpty) { m_StreamOutput.SendEnd(); m_State = State.Idle; } }