public SubscriptionToken ProcessEntity(IInteractReactionSystem system, IEntity entity)
        {
            var obs          = system.Impact(entity);
            var subscription = obs.Subscribe <IEntity>(x =>
            {
                system.Reaction(entity, x);
            });

            return(new SubscriptionToken(entity, subscription));
        }
Exemplo n.º 2
0
        public SubscriptionToken ProcessEntity(IInteractReactionSystem 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(entity))
                    {
                        system.Reaction(entity, x);
                    }
                    return;
                }

                system.Reaction(entity, x);
            });

            return(new SubscriptionToken(entity, subscription));
        }
        public IEnumerable <SubscriptionToken> Setup(IInteractReactionSystem system)
        {
            var entities = PoolManager.GetEntitiesFor(system.TargetGroup);

            return(entities.ForEachRun(x => ProcessEntity(system, x)));
        }
Exemplo n.º 4
0
        public IEnumerable <SubscriptionToken> Setup(IInteractReactionSystem system)
        {
            var groupAccessor = PoolManager.CreateGroupAccessor(system.TargetGroup);

            return(groupAccessor.Entities.ForEachRun(x => ProcessEntity(system, x)));
        }