using System; namespace UniRx { /// /// Notify boolean flag. /// public class BooleanNotifier : IObservable { private readonly Subject boolTrigger = new(); private bool boolValue; /// /// Setup initial flag. /// public BooleanNotifier(bool initialValue = false) { Value = initialValue; } /// Current flag value public bool Value { get => boolValue; set { boolValue = value; boolTrigger.OnNext(value); } } /// /// Subscribe observer. /// public IDisposable Subscribe(IObserver observer) { return boolTrigger.Subscribe(observer); } /// /// Set and raise true if current value isn't true. /// public void TurnOn() { if (!Value) Value = true; } /// /// Set and raise false if current value isn't false. /// public void TurnOff() { if (Value) Value = false; } /// /// Set and raise reverse value. /// public void SwitchValue() { Value = !Value; } } }