public static IReadOnlyEventField <B> Watch <T, B>(this IReadOnlyEventField <T> field, Func <T, IReadOnlyEventField <B> > chain) { var watcher = new EventField <B> (); field.Handlers[watcher].Add(new EventFieldChainHandler <T, B> (field, watcher, chain)); return(watcher); }
public EventField <B> Watch <B> (Func <T, EventField <B> > chain) { var watcher = new EventField <B> (); Handlers[watcher] += new EventFieldChainHandler <T, B> (this, watcher, chain); return(watcher); }
public EventFieldChainHandler(EventField <T> source, EventField <B> target, Func <T, EventField <B> > chain) { SourceField = source; TargetField = target; Chain = chain; ChainedField = Chain(SourceField.Value); }
public Actor() { behaviours = new List <INodeInstance> (); Health = new EventField <int> { Value = 100 }; }
public void OnAfterChanged() { ChainedField = Chain(SourceField.Value); if (ChainedField == null) { TargetField.Value = default(B); return; } ChainedField.Handlers[this] += new EventFieldMirrorHandler <B> (ChainedField, TargetField); TargetField.Value = ChainedField.Value; }
public HandlerCollection(EventField <T> field) { this.field = field; handlers = null; }
public ContextWrapped(EventField <T> field, object context) { Field = field; Context = context; Result = null; }