예제 #1
0
        public void CreateUIScene(string json)
        {
#if UNITY_EDITOR
            DebugConfig debugConfig = DataStore.i.debugConfig;

            if (debugConfig.soloScene && debugConfig.ignoreGlobalScenes)
            {
                return;
            }
#endif
            CreateUISceneMessage uiScene = Utils.SafeFromJson <CreateUISceneMessage>(json);

            string uiSceneId = uiScene.id;

            IWorldState worldState = Environment.i.world.state;

            if (worldState.loadedScenes.ContainsKey(uiSceneId))
            {
                return;
            }

            var newGameObject = new GameObject("UI Scene - " + uiSceneId);

            var newScene = newGameObject.AddComponent <GlobalScene>();
            newScene.ownerController    = this;
            newScene.unloadWithDistance = false;
            newScene.isPersistent       = true;

            LoadParcelScenesMessage.UnityParcelScene data = new LoadParcelScenesMessage.UnityParcelScene
            {
                id           = uiSceneId,
                basePosition = new Vector2Int(0, 0),
                baseUrl      = uiScene.baseUrl
            };

            newScene.SetData(data);

            worldState.loadedScenes.Add(uiSceneId, newScene);
            OnNewSceneAdded?.Invoke(newScene);

            worldState.globalSceneId = uiSceneId;

            Environment.i.messaging.manager.AddControllerIfNotExists(this, worldState.globalSceneId, isGlobal: true);

            if (VERBOSE)
            {
                Debug.Log($"Creating UI scene {uiSceneId}");
            }
        }
예제 #2
0
        public void CreateUIScene(string json)
        {
#if UNITY_EDITOR
            if (debugScenes && ignoreGlobalScenes)
            {
                return;
            }
#endif
            CreateUISceneMessage uiScene = SafeFromJson <CreateUISceneMessage>(json);

            string uiSceneId = uiScene.id;

            if (loadedScenes.ContainsKey(uiSceneId))
            {
                return;
            }

            var newGameObject = new GameObject("UI Scene - " + uiSceneId);

            var newScene = newGameObject.AddComponent <GlobalScene>();
            newScene.ownerController    = this;
            newScene.unloadWithDistance = false;
            newScene.isPersistent       = true;

            LoadParcelScenesMessage.UnityParcelScene data = new LoadParcelScenesMessage.UnityParcelScene
            {
                id           = uiSceneId,
                basePosition = new Vector2Int(0, 0),
                baseUrl      = uiScene.baseUrl
            };

            newScene.SetData(data);

            loadedScenes.Add(uiSceneId, newScene);

            globalSceneId = uiSceneId;

            if (!MessagingControllersManager.i.ContainsController(globalSceneId))
            {
                MessagingControllersManager.i.AddController(this, globalSceneId, isGlobal: true);
            }

            if (VERBOSE)
            {
                Debug.Log($"Creating UI scene {uiSceneId}");
            }
        }