canto/Assets/Scripts/SOAP/ReactiveValue.cs

26 lines
683 B
C#

using R3;
using UnityEngine;
namespace KitsuneCafe.SOAP
{
public class ReactiveValue<T> : ReactiveSource<T>, IBoxable
{
#if UNITY_EDITOR
[TextArea]
public string Description = "";
#endif
[SerializeField]
protected SerializableReactiveProperty<T> value;
public virtual T Value { get => value.Value; set { this.value.Value = value; } }
public ReadOnlyReactiveProperty<T> AsReactiveProperty() => value;
public override Observable<T> AsObservable() => value;
public object AsBoxed() => value;
public void FromBoxed(object boxedValue)
{
value.Value = (T)boxedValue;
}
}
}