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 ThrottledEntityDispatcher(IUniverse universe, IEntitySpawnLimiter spawnLimiter, WorkerMetrics workerMetrics) { this.universe = universe; this.spawnLimiter = spawnLimiter; this.workerMetrics = workerMetrics; }