public SubscriptionToken ProcessEntity(IEntityReactionSystem system, IEntity entity) { var observable = system.Impact(entity); var subscription = observable?.Subscribe(x => system.Reaction(entity)) ?? Disposable.Empty; return(new SubscriptionToken(entity, subscription)); }
public SubscriptionToken ProcessEntity(IEntityReactionSystem system, IEntity entity) { var hasEntityPredicate = system.TargetGroup is IHasPredicate; var subscription = system.Impact(entity) .Subscribe(x => { if (hasEntityPredicate) { var groupPredicate = system.TargetGroup as IHasPredicate; if (groupPredicate.CanProcessEntity(x)) { system.Reaction(x); } return; } system.Reaction(x); }); return(new SubscriptionToken(entity, subscription)); }
public IEnumerable <SubscriptionToken> Setup(IEntityReactionSystem system) { var entities = PoolManager.GetEntitiesFor(system.TargetGroup); return(entities.ForEachRun(x => ProcessEntity(system, x))); }
public IEnumerable <SubscriptionToken> Setup(IEntityReactionSystem system) { var accessor = PoolManager.CreateGroupAccessor(system.TargetGroup); return(accessor.Entities.ForEachRun(x => ProcessEntity(system, x))); }