/// <summary> /// Creates a new system. Entities are added to the system based on if they pass the /// given filter. /// </summary> public EntityCache(Filter filter) { _filter = filter; _metadataKey = EntityManagerMetadata.GetUnorderedListMetadataIndex(); CachedEntities = new UnorderedList<IEntity>(); }
internal MultithreadedSystem(MultithreadedSystemSharedContext sharedData, ISystem system) { System = system; _shared = sharedData; PerformanceData = new PerformanceInformation(system); ITriggerFilterProvider trigger = system as ITriggerFilterProvider; if (trigger != null) { _filter = new Filter(DataAccessorFactory.MapTypesToDataAccessors(trigger.RequiredDataTypes)); _entityCache = new EntityCache(_filter); // all of these triggers require a filter _triggerAdded = trigger as Trigger.Added; _triggerRemoved = trigger as Trigger.Removed; _triggerModified = trigger as Trigger.Modified; _triggerUpdate = trigger as Trigger.Update; _triggerInput = trigger as Trigger.Input; } // these triggers don't require a filter _triggerGlobalPreUpdate = system as Trigger.GlobalPreUpdate; _triggerGlobalPostUpdate = system as Trigger.GlobalPostUpdate; _triggerGlobalInput = system as Trigger.GlobalInput; }