public LegacyEntityCreator(IEntityTemplateProvider templateProvider, ISpatialCommunicator spatialCommunicator, IPrefabFactory <GameObject> prefabFactory, IMutableUniverse universe, IEntityComponentInterestOverridesUpdater entityComponentInterestOverridesUpdater, IInterestedComponentUpdaterProvider interestedComponentUpdaterProvider, WorkerMetrics metrics) { this.templateProvider = templateProvider; this.prefabFactory = new PrefabFactoryMetrics(prefabFactory, metrics); // Associate metrics with the factory this.spatialCommunicator = spatialCommunicator; this.universe = universe; this.entityComponentInterestOverridesUpdater = entityComponentInterestOverridesUpdater; this.interestedComponentUpdaterProvider = interestedComponentUpdaterProvider; entitiesToSpawn = new Dictionary <EntityId, EntitySpawnData>(); knownEntities = new HashSet <EntityId>(); this.metrics = metrics; }
public LegacyEntityPipelineSetup(MonoBehaviour hostBehaviour, IEntityPipeline entityPipeline, ISpatialCommunicator spatialCommunicator, IMutableUniverse universe, ILegacyEntityPipelineConfiguration config, IEntitySpawnLimiter spawnLimiter) { this.entityPipeline = entityPipeline; IPrefabFactory <GameObject> prefabFactory; if (!config.UsePrefabPooling && config.AssetsToPrePool != null && config.AssetsToPrePool.Any()) { Debug.LogError("There are prefabs specified for pre-pooling, but prefab pooling is not enabled - pooling will occur"); } bool preloaderHasFactory = false; if (config.UsePrefabPooling || config.AssetsToPrecache != null || config.AssetsToPrePool != null) { preloaderHasFactory = true; #pragma warning disable 0612 assetPreloader = new AssetPreloader(hostBehaviour, config.TemplateProvider, config.AssetsToPrecache, config.AssetsToPrePool, config.MaxConcurrentPrecacheConnections); #pragma warning restore 0612 assetPreloader.PrecachingCompleted += () => { if (config.OnPrecachingCompleted != null) { config.OnPrecachingCompleted(); } }; assetPreloader.PrecachingProgress += progress => { if (config.OnPrecacheProgress != null) { config.OnPrecacheProgress(progress); } }; } if (preloaderHasFactory && config.UsePrefabPooling) { prefabFactory = assetPreloader.PrefabFactory; } else { prefabFactory = new UnityPrefabFactory(); } criticalSectionPipelineBlock = new CriticalSectionPipelineBlock(); throttledEntityDispatcher = new ThrottledEntityDispatcher(universe, spawnLimiter, config.Metrics); legacyEntityCreator = new LegacyEntityCreator( config.TemplateProvider, spatialCommunicator, prefabFactory, universe, config.EntityComponentInterestOverridesUpdater, config.InterestedComponentUpdaterProvider, config.Metrics); legacyComponentPipeline = new LegacyComponentPipeline(universe); entityComponentUpdater = new EntityComponentUpdater(universe); templateProvider = config.TemplateProvider; }
public LegacyComponentPipeline(IMutableUniverse universe) { this.universe = universe; }