示例#1
0
        public StreamingManager(ISceneResourceRequestHandler requestHandler,
                                IStreamingGoManager streamingGo,
                                StreamingData sceneDescription,
                                ScenesLightmapData.MeshRecords scenesLightmapRecords,
                                ScenesIndoorCullData.IndoorCullRecords scenesIndoorCullRecords,
                                WorldCompositionParam param,
                                int preloadSceneCount)
        {
            _requestHandler          = requestHandler;
            _sceneDescription        = sceneDescription;
            _scenesLightmapRecords   = scenesLightmapRecords;
            _scenesIndoorCullRecords = scenesIndoorCullRecords;
            _concurrentCount         = preloadSceneCount;

            _worldComposition = new WorldCompositionManager(this, param);
            _streamingGo      = streamingGo ?? new StreamingGoByScene();

            _streamingGo.SetResourceHandler(this);
            _triggerObjectManager = SingletonManager.Get <TriggerObjectManager>();
            if (_sceneDescription != null)
            {
                var count = _sceneDescription.Scenes.Count;
                for (int i = 0; i < count; i++)
                {
                    _sceneIndex.Add(_sceneDescription.Scenes[i].SceneName, i);
                }
            }

            _requestHandler.SceneLoaded   += SceneLoaded;
            _requestHandler.SceneUnloaded += SceneUnloaded;
            _requestHandler.GoLoaded      += GoLoaded;
            _requestHandler.GoUnloaded    += GoUnloaded;
        }
示例#2
0
        public StreamingManager(ISceneResourceRequestHandler requestHandler,
                                IStreamingGoManager streamingGo,
                                StreamingData sceneDescription,
                                WorldCompositionParam param,
                                int preloadSceneCount)
        {
            _requestHandler   = requestHandler;
            _sceneDescription = sceneDescription;
            _concurrentCount  = preloadSceneCount;

            _worldComposition = new WorldCompositionManager(this, param);
            _streamingGo      = streamingGo ?? new StreamingGoByScene();

            _streamingGo.SetResourceHandler(this);

            if (_sceneDescription != null)
            {
                var count = _sceneDescription.Scenes.Count;
                for (int i = 0; i < count; i++)
                {
                    _sceneIndex.Add(_sceneDescription.Scenes[i].SceneName, i);
                }
            }

            _requestHandler.SceneLoaded   += SceneLoaded;
            _requestHandler.SceneUnloaded += SceneUnloaded;
            _requestHandler.GoLoaded      += GoLoaded;
            _requestHandler.GoUnloaded    += GoUnloaded;
        }
示例#3
0
        public void SetToWorldCompositionLevel(WorldCompositionParam param, IStreamingGoManager streamingGo)
        {
            _fixedSceneNames = param.FixedScenes;
            _sceneManager    = new StreamingManager(this, streamingGo, SingletonManager.Get <StreamingLevelStructure>().Data,
                                                    param, _fixedSceneNames.Count);

            RequestForFixedScenes(param.AssetBundleName);
        }
示例#4
0
        public InitialSceneLoadingSystem(ISessionState sessionState, Contexts ctx, IStreamingGoManager streamingGo, bool isServer)
        {
            _sessionState = sessionState;
            _contexts     = ctx;

            _sessionState.CreateExitCondition(typeof(InitialSceneLoadingSystem));

            _levelManager = new LevelManager(_contexts.session.commonSession.AssetManager, isServer);
            _contexts.session.commonSession.LevelManager = _levelManager;
            _initPosition = _contexts.session.commonSession.InitPosition;

            _isServer = isServer;

            var allMaps = SingletonManager.Get <MapsDescription>();

            switch (allMaps.CurrentLevelType)
            {
            case LevelType.BigMap:
                var worldCompositionParam = new WorldCompositionParam
                {
                    TerrainMin         = allMaps.BigMapParameters.TerrainMin,
                    TerrainDimension   = allMaps.BigMapParameters.TerrainDimension,
                    TerrainSize        = allMaps.BigMapParameters.TerrainSize,
                    TerrainNamePattern = allMaps.BigMapParameters.TerrainNamePattern,
                    AssetBundleName    = allMaps.BigMapParameters.BundleName,
                    PreMapName         = allMaps.BigMapParameters.PreMapName,
                    FixedScenes        = allMaps.BigMapParameters.AdditiveSceneName,
                    LoadRadiusInGrid   = 1.0f,
                    UnloadRadiusInGrid = 1.5f
                };
                if (_isServer)
                {
                    worldCompositionParam.LoadRadiusInGrid   = float.MaxValue;
                    worldCompositionParam.UnloadRadiusInGrid = float.MaxValue;
                }

                _levelManager.SetToWorldCompositionLevel(worldCompositionParam, streamingGo);
                _levelManager.SetAsapMode(true);
                break;

            case LevelType.SmallMap:
                _levelManager.SetToFixedScenesLevel(new OnceForAllParam
                {
                    AssetBundleName = allMaps.SmallMapParameters.BundleName,
                    FixedScenes     = new List <string>
                    {
                        allMaps.SmallMapParameters.AssetName
                    }
                });
                break;

            case LevelType.Exception:
                throw new InvalidEnumArgumentException("map id not set");
            }
        }
示例#5
0
        public void SetToWorldCompositionLevel(WorldCompositionParam param, IStreamingGoManager streamingGo)
        {
            _fixedSceneNames = param.FixedScenes;
            StreamingLevelStructure streamingLevel = SingletonManager.Get <StreamingLevelStructure>();
            ScenesLightmapStructure lightmap       = SingletonManager.Get <ScenesLightmapStructure>();

            lightmap.ListToDict();
            ScenesIndoorCullStructure indoor = SingletonManager.Get <ScenesIndoorCullStructure>();

            indoor.ListToDict();
            _sceneManager = new StreamingManager(this, streamingGo, streamingLevel.Data,
                                                 lightmap.Data, indoor.Data, param, _fixedSceneNames.Count);

            //RequestForFixedScenes(param.AssetBundleName);
            RequestForFixedScenes(param.PreMapName + "/scene");
        }