/// <summary> /// Broadcasts the value if needed /// </summary> protected virtual void ProcessBroadcast() { if (Emitter == null) { return; } float level = Emitter.GetLevel(); if (level != _levelLastFrame) { // we trigger a value change event OnValueChange?.Invoke(); // for each of our receivers, we set the level manually foreach (MMRadioReceiver receiver in Receivers) { receiver?.SetLevel(level); } // we broadcast an event if (BroadcastOnChannel) { MMRadioLevelEvent.Trigger(Channel, level); } } _levelLastFrame = level; }
/// <summary> /// Starts listening for events /// </summary> public virtual void StartListening() { _listeningToEvents = true; MMRadioLevelEvent.Register(OnRadioLevelEvent); }
/// <summary> /// Stops listening for events /// </summary> public virtual void StopListening() { _listeningToEvents = false; MMRadioLevelEvent.Unregister(OnRadioLevelEvent); }