canto/Assets/Scripts/SOAP/ReactiveEvent.cs
2025-07-14 22:22:25 -04:00

25 lines
535 B
C#

using System;
using R3;
using UnityEngine;
namespace KitsuneCafe.SOAP
{
public class ReactiveEvent<T> : ReactiveSource<T>, IEvent<T>
{
protected readonly ISubject<T> onRaise = new Subject<T>();
public override Observable<T> AsObservable() => (Observable<T>)onRaise;
public virtual void Raise(T value)
{
onRaise.OnNext(value);
}
private void OnDestroy()
{
onRaise.OnCompleted();
((IDisposable)onRaise).Dispose();
}
}
}