Aetheria/Assets/Plugins/UniRx/Scripts/Operators/SubscribeOn.cs
Reinier Vens dbc522a224 Weapos Rejiggered
Modified weapon scripts to eliminate specialized projectile behavior - allows charged weapons to have projectiles and modify weapon stats when charged
Added machine gun weapon & VFX
Moved third party code to Plugins folder to improve compile times
2021-01-31 03:52:32 +00:00

32 lines
No EOL
971 B
C#

using System;
using System.Collections.Generic;
namespace UniRx.Operators
{
internal class SubscribeOnObservable<T> : OperatorObservableBase<T>
{
readonly IObservable<T> source;
readonly IScheduler scheduler;
public SubscribeOnObservable(IObservable<T> source, IScheduler scheduler)
: base(scheduler == Scheduler.CurrentThread || source.IsRequiredSubscribeOnCurrentThread())
{
this.source = source;
this.scheduler = scheduler;
}
protected override IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel)
{
var m = new SingleAssignmentDisposable();
var d = new SerialDisposable();
d.Disposable = m;
m.Disposable = scheduler.Schedule(() =>
{
d.Disposable = new ScheduledDisposable(scheduler, source.Subscribe(observer));
});
return d;
}
}
}