Exemplo n.º 1
0
            /// <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>();
            }
Exemplo n.º 2
0
        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;
        }