YanCheng_Metrology/Assets/Plugins/UniRx/Scripts/Notifiers/BooleanNotifier.cs

73 lines
1.6 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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