Example #1
0
        /// <summary>
        /// Add the current opened level to the end of data
        /// </summary>
        private void AddCurrentLevel()
        {
            var loadedScenePath =
                LevelSceneManagement.GetLoadedLevelScenePath();

            if (string.IsNullOrEmpty(loadedScenePath))
            {
                return;
            }

            var guid            = AssetDatabase.AssetPathToGUID(loadedScenePath);
            var settings        = AddressableAssetSettingsDefaultObject.Settings;
            var assetReference  = settings.CreateAssetReference(guid);
            var playerTransform = LevelSceneManagement.GetPlayerTransform();
            var respawnPosition =
                playerTransform == null ? Vector3.zero : playerTransform.position;

            // Unselect the item to make it added at the end of data
            _listView.selectedIndex = -1;
            AddLevelItem();

            var levelID = _listView.selectedIndex;

            serializedObject.Update();
            _levelData.ModifyLevelScene(levelID, assetReference);
            _levelData.ModifyPlayerSpawnPoint(levelID, respawnPosition);
            serializedObject.ApplyModifiedProperties();
        }
Example #2
0
        /// <summary>
        /// Update the player spawn point to the opened level
        /// </summary>
        private void UpdatePlayerSpawnPoint()
        {
            var levelID = LevelSceneManagement.GetLoadedLevelID(_levelData);

            if (levelID == -1)
            {
                return;
            }

            var playerTransform = LevelSceneManagement.GetPlayerTransform();
            var respawnPosition =
                playerTransform == null ? Vector3.zero : playerTransform.position;

            _levelData.ModifyPlayerSpawnPoint(levelID, respawnPosition);
            serializedObject.ApplyModifiedProperties();

            SelectLevelItem(levelID);
        }
Example #3
0
        /// <summary>
        /// Open the selected level scene
        /// </summary>
        private void OpenLevelScene(int index)
        {
            var curLevelID = LevelSceneManagement.GetLoadedLevelID(_levelData);

            LevelSceneManagement.OpenGamePlayScene();

            if (curLevelID == index)
            {
                Debug.Log("The specified level has been already opened");
                return;
            }

            // If user pressed cancel while asking for saving the scene,
            // not to load the new scene
            if (curLevelID != -1 &&
                !EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())
            {
                return;
            }

            var sceneAssetPath = _levelData.GetLevelScenePath(index);

            LevelSceneManagement.OpenLevelScene(sceneAssetPath);
        }