public SubscriptionToken Setup(IGroupReactionSystem system) { //var hasEntityPredicate = system.TargetGroup is IHasPredicate; var groupAccessor = PoolManager.CreateGroupAccessor(system.TargetGroup); var subscription = system.Impact(groupAccessor) .Subscribe(accessor => { foreach (var entity in accessor.Entities) { system.Reaction(entity); } /* * var entities = accessor.Entities.ToList(); * var entityCount = entities.Count - 1; * for (var i = entityCount; i >= 0; i--) * { * if (hasEntityPredicate) * { * var groupPredicate = system.TargetGroup as IHasPredicate; * if (groupPredicate.CanProcessEntity(entities[i])) * { * system.Reaction(entities[i]); * } * return; * } * * system.Reaction(entities[i]); * }*/ }); return(new SubscriptionToken(null, subscription)); }
public SubscriptionToken Setup(IGroupReactionSystem system) { var groupAccessor = PoolManager.CreateGroupAccessor(system.TargetGroup); var subscription = system.Impact(groupAccessor) .Subscribe(accessor => { foreach (var entity in accessor.Entities) { system.Reaction(entity); } }); return(new SubscriptionToken(null, subscription)); }