Ejemplo n.º 1
0
        public void IterationSetup()
        {
            _entities = new List <IEntity>();
            for (var i = 0; i < Entities; i++)
            {
                var entity = new Entity(i, _componentRepository);
                entity.AddComponents(_availableComponents);
                _entities.Add(entity);
            }

            _system = new EntityUpdateSystem();
        }
Ejemplo n.º 2
0
        public IDisposable ProcessEntity(IReactToEntitySystem system, IEntity entity)
        {
            var hasEntityPredicate = system.TargetGroup is IHasPredicate;
            var reactObservable    = system.ReactToEntity(entity);

            if (!hasEntityPredicate)
            {
                return(reactObservable.Subscribe(system.Execute));
            }

            var groupPredicate = system.TargetGroup as IHasPredicate;

            return(reactObservable
                   .Where(groupPredicate.CanProcessEntity)
                   .Subscribe(system.Execute));
        }
Ejemplo n.º 3
0
        public IDisposable ProcessEntity(IReactToEntitySystem system, IEntity entity)
        {
            var hasEntityPredicate = system.Group is IHasPredicate;
            var reactObservable    = system.ReactToEntity(entity);

            if (false == hasEntityPredicate)
            {
                return(reactObservable.Subscribe(system.Process));
            }

            var groupPredicate = (IHasPredicate)system.Group;

            return(reactObservable.Subscribe(x =>
            {
                if (groupPredicate.CanProcessEntity(x))
                {
                    system.Process(x);
                }
            }));
        }
        public SubscriptionToken ProcessEntity(IReactToEntitySystem system, IEntity entity)
        {
            var hasEntityPredicate = system.TargetGroup.TargettedEntities != null;
            var subscription       = system.ReactToEntity(entity)
                                     .Subscribe(x =>
            {
                if (hasEntityPredicate)
                {
                    if (system.TargetGroup.TargettedEntities(x))
                    {
                        system.Execute(x);
                    }
                    return;
                }

                system.Execute(x);
            });

            return(new SubscriptionToken(entity, subscription));
        }
Ejemplo n.º 5
0
        public SubscriptionToken ProcessEntity(IReactToEntitySystem system, IEntity entity)
        {
            var hasEntityPredicate = system.TargetGroup is IHasPredicate;
            var subscription       = system.ReactToEntity(entity)
                                     .Subscribe(x =>
            {
                if (hasEntityPredicate)
                {
                    var groupPredicate = system.TargetGroup as IHasPredicate;
                    if (groupPredicate.CanProcessEntity(x))
                    {
                        system.Execute(x);
                    }
                    return;
                }

                system.Execute(x);
            });

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

            return(entities.ForEachRun(x => ProcessEntity(system, x)));
        }
Ejemplo n.º 7
0
        public IEnumerable <SubscriptionToken> Setup(IReactToEntitySystem system)
        {
            var accessor = PoolManager.CreateGroupAccessor(system.TargetGroup);

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