public static ITriggerAction <T> Timeout <T>(this ITriggerAction <T> self, float time, bool realtime = false) { Trigger <T> trigger = new Trigger <T>(oneShot: self.OneShot); self.Add(trigger); var timeout = realtime ? TriggerBehaviour.Realtime(time) : TriggerBehaviour.Time(time); timeout.Add(ret => { if (!trigger.Action.Fired) { trigger.Error(new TimeoutException("trigger timeout")); } }); return(trigger.Action); }
public static ITriggerAction <T> Realtime <T>(this ITriggerAction <T> self, float time) { Trigger <T> trigger = new Trigger <T>(oneShot: self.OneShot); self.Add((item, ex) => { if (ex != null) { trigger.Error(ex); } else { TriggerBehaviour.Realtime(time) .Add(x => trigger.Fire(item)) .AddFail(trigger.Error); } }); return(trigger.Action); }
public static ITriggerAction <bool> Realtime(float time) { return(TriggerBehaviour.Realtime(time)); }