Skip to content

Instantly share code, notes, and snippets.

@adarapata
Created October 1, 2016 05:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save adarapata/86189ae8a392e821eb518cae6e52409e to your computer and use it in GitHub Desktop.
Save adarapata/86189ae8a392e821eb518cae6e52409e to your computer and use it in GitHub Desktop.
using Arbor;
using UniRx;
using UniRx.Triggers;
namespace ArborExtention
{
public class ObservableStateBehaviour : StateBehaviour
{
private Subject<Unit> stateBeginStream = new Subject<Unit> ();
public IObservable<Unit> stateBeginAsObservable {
get { return stateBeginStream.AsObservable (); }
}
private Subject<Unit> stateEndStream = new Subject<Unit> ();
public IObservable<Unit> stateEndAsObservable {
get { return stateEndStream.AsObservable (); }
}
public Subject<Unit> stateAwakeStream = new Subject<Unit>();
public IObservable<Unit> stateAwakeAsObservable
{
get { return stateAwakeStream.AsObservable(); }
}
public IObservable<Unit> updateAsObservable {
get {
return this.UpdateAsObservable ()
.SkipUntil (stateBeginAsObservable)
.TakeUntil (stateEndAsObservable)
.Repeat ();
}
}
public override void OnStateBegin ()
{
stateBeginStream.OnNext (default(Unit));
}
public override void OnStateEnd ()
{
stateEndStream.OnNext (default(Unit));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment