Exemple #1
0
        public void Execute()
        {
            if (collector.GetCount() != 0)
            {
                var collectedEntities = collector.GetCollectedEntities();

                for (int i = (collectedEntities.Count - 1); i >= 0; --i)
                {
                    if (Filter(collectedEntities[i]))
                    {
                        entities.Add(collectedEntities[i]);
                        collectedEntities[i].Retain();
                    }
                }

                collector.ClearCollectedEntities();

                if (entities.Count != 0)
                {
                    try
                    {
                        Execute(entities);
                    }
                    finally
                    {
                        for (int i = (entities.Count - 1); i >= 0; --i)
                        {
                            entities[i].Release();
                        }

                        entities.Clear();
                    }
                }
            }
        }