Esempio n. 1
0
 override public void AssignValues(List <ActionParameter> parameters)
 {
     if (sceneSetting == SceneSetting.DefaultNavMesh)
     {
         if (KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.PolygonCollider && changeNavMeshMethod == ChangeNavMeshMethod.ChangeNumberOfHoles)
         {
             hole = AssignFile <PolygonCollider2D> (parameters, parameterID, constantID, hole);
         }
         else
         {
             newNavMesh = AssignFile <NavigationMesh> (parameters, parameterID, constantID, newNavMesh);
         }
     }
     else if (sceneSetting == SceneSetting.DefaultPlayerStart)
     {
         playerStart = AssignFile <PlayerStart> (parameters, parameterID, constantID, playerStart);
     }
     else if (sceneSetting == SceneSetting.SortingMap)
     {
         sortingMap = AssignFile <SortingMap> (parameters, parameterID, constantID, sortingMap);
     }
     else if (sceneSetting == SceneSetting.OnLoadCutscene || sceneSetting == SceneSetting.OnStartCutscene)
     {
         cutscene = AssignFile <Cutscene> (parameters, parameterID, constantID, cutscene);
     }
 }
Esempio n. 2
0
 /**
  * <summary>Triggers the OnOccupyPlayerStart event.</summary>
  * <param name = "player">The Player that was affected</param>
  * <param name = "playerStart">The PlayerStart that the Player has been set to occupy</param>
  */
 public void Call_OnOccupyPlayerStart(Player player, PlayerStart playerStart)
 {
     if (OnOccupyPlayerStart != null)
     {
         OnOccupyPlayerStart(player, playerStart);
     }
 }
Esempio n. 3
0
        /**
         * <summary>Updates the record of the Player's current position, based on data made when their scene was not active</summary>
         * <param name = "sceneInstance">The scene instance of the Player to affect</param>
         */
        public void UpdateFromTempPosition(Player sceneInstance)
        {
            if (tempPlayerStart == 0)
            {
                return;
            }

            PlayerStart playerStart = null;

            switch (tempTeleportPlayerStartMethod)
            {
            case TeleportPlayerStartMethod.SceneDefault:
                playerStart = KickStarter.sceneSettings.defaultPlayerStart;
                break;

            case TeleportPlayerStartMethod.BasedOnPrevious:
                playerStart = KickStarter.sceneSettings.GetPlayerStart(playerID);
                break;

            case TeleportPlayerStartMethod.EnteredHere:
                // Search the scene the Player is in, in case the character is in a sub-scene
                Scene sceneToSearch = (sceneInstance.gameObject.IsPersistent())
                                                                                  ? SceneChanger.CurrentScene
                                                                                  : sceneInstance.gameObject.scene;
                playerStart = ConstantID.GetComponent <PlayerStart> (tempPlayerStart, sceneToSearch);
                break;
            }

            UpdatePositionFromPlayerStart(playerStart);
        }
Esempio n. 4
0
 public override void AssignValues(List<ActionParameter> parameters)
 {
     if (sceneSetting == SceneSetting.DefaultNavMesh)
     {
         if (KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.PolygonCollider && changeNavMeshMethod == ChangeNavMeshMethod.ChangeNumberOfHoles)
         {
             hole = AssignFile <PolygonCollider2D> (parameters, parameterID, constantID, hole);
             replaceHole = AssignFile <PolygonCollider2D> (parameters, replaceParameterID, replaceConstantID, replaceHole);
         }
         else
         {
             newNavMesh = AssignFile <NavigationMesh> (parameters, parameterID, constantID, newNavMesh);
         }
     }
     else if (sceneSetting == SceneSetting.DefaultPlayerStart)
     {
         playerStart = AssignFile <PlayerStart> (parameters, parameterID, constantID, playerStart);
     }
     else if (sceneSetting == SceneSetting.SortingMap)
     {
         sortingMap = AssignFile <SortingMap> (parameters, parameterID, constantID, sortingMap);
     }
     else if (sceneSetting == SceneSetting.SortingMap)
     {
         tintMap = AssignFile <TintMap> (parameters, parameterID, constantID, tintMap);
     }
     else if (sceneSetting == SceneSetting.OnLoadCutscene || sceneSetting == SceneSetting.OnStartCutscene)
     {
         cutscene = AssignFile <Cutscene> (parameters, parameterID, constantID, cutscene);
     }
 }
        public override void OnInspectorGUI()
        {
            PlayerStart _target = (PlayerStart)target;

            if (KickStarter.sceneSettings != null && KickStarter.sceneSettings.defaultPlayerStart == _target)
            {
                EditorGUILayout.HelpBox("This PlayerStart is the scene's default, and will be used if a more appropriate one is not found.", MessageType.Info);
            }

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Previous scene that activates", EditorStyles.boldLabel);
            _target.chooseSceneBy = (ChooseSceneBy)EditorGUILayout.EnumPopup("Choose scene by:", _target.chooseSceneBy);
            if (_target.chooseSceneBy == ChooseSceneBy.Name)
            {
                _target.previousSceneName = EditorGUILayout.TextField("Previous scene:", _target.previousSceneName);
            }
            else
            {
                _target.previousScene = EditorGUILayout.IntField("Previous scene:", _target.previousScene);
            }
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Camera settings", EditorStyles.boldLabel);
            _target.cameraOnStart = (_Camera)EditorGUILayout.ObjectField("Camera on start:", _target.cameraOnStart, typeof(_Camera), true);
            _target.fadeInOnStart = EditorGUILayout.Toggle("Fade in on start?", _target.fadeInOnStart);
            if (_target.fadeInOnStart)
            {
                _target.fadeSpeed = EditorGUILayout.FloatField("Fade speed:", _target.fadeSpeed);
            }
            EditorGUILayout.EndVertical();

            UnityVersionHandler.CustomSetDirty(_target);
        }
Esempio n. 6
0
        public override void OnInspectorGUI()
        {
            PlayerStart _target = (PlayerStart)target;

            if (KickStarter.sceneSettings != null && KickStarter.sceneSettings.defaultPlayerStart == _target)
            {
                EditorGUILayout.HelpBox("This PlayerStart is the scene's default, and will be used if a more appropriate one is not found.", MessageType.Info);
            }

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Previous scene that activates", EditorStyles.boldLabel);
            _target.chooseSceneBy = (ChooseSceneBy)CustomGUILayout.EnumPopup("Choose scene by:", _target.chooseSceneBy, "", "The way in which the previous scene is identified by");
            if (_target.chooseSceneBy == ChooseSceneBy.Name)
            {
                _target.previousSceneName = CustomGUILayout.TextField("Previous scene:", _target.previousSceneName, "", "The name of the previous scene to check for");
            }
            else
            {
                _target.previousScene = CustomGUILayout.IntField("Previous scene:", _target.previousScene, "", "The build-index number of the previous scene to check for");
            }
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Camera settings", EditorStyles.boldLabel);
            _target.cameraOnStart = (_Camera)CustomGUILayout.ObjectField <_Camera> ("Camera on start:", _target.cameraOnStart, true, "", "The AC _Camera that should be made active when the Player starts the scene from this point");
            _target.fadeInOnStart = CustomGUILayout.Toggle("Fade in on start?", _target.fadeInOnStart, "", "If True, then the MainCamera will fade in when the Player starts the scene from this point");
            if (_target.fadeInOnStart)
            {
                _target.fadeSpeed = CustomGUILayout.FloatField("Fade speed:", _target.fadeSpeed, "", "The speed of the fade");
            }
            EditorGUILayout.EndVertical();

            UnityVersionHandler.CustomSetDirty(_target);
        }
		override public void AssignValues (List<ActionParameter> parameters)
		{
			SceneSettings sceneSettings = GameObject.FindWithTag (Tags.gameEngine).GetComponent <SceneSettings>();

			if (sceneSetting == SceneSetting.DefaultNavMesh)
			{
				if (sceneSettings.navigationMethod == AC_NavigationMethod.PolygonCollider && changeNavMeshMethod == ChangeNavMeshMethod.ChangeNumberOfHoles)
				{
					hole = AssignFile <PolygonCollider2D> (parameters, parameterID, constantID, hole);
				}
				else
				{
					newNavMesh = AssignFile <NavigationMesh> (parameters, parameterID, constantID, newNavMesh);
				}
			}
			else if (sceneSetting == SceneSetting.DefaultPlayerStart)
			{
				playerStart = AssignFile <PlayerStart> (parameters, parameterID, constantID, playerStart);
			}
			else if (sceneSetting == SceneSetting.SortingMap)
			{
				sortingMap = AssignFile <SortingMap> (parameters, parameterID, constantID, sortingMap);
			}
			else if (sceneSetting == SceneSetting.OnLoadCutscene || sceneSetting == SceneSetting.OnStartCutscene)
			{
				cutscene = AssignFile <Cutscene> (parameters, parameterID, constantID, cutscene);
			}
		}
Esempio n. 8
0
        public override void OnInspectorGUI()
        {
            PlayerStart _target = (PlayerStart)target;

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Previous scene that activates", EditorStyles.boldLabel);
            _target.chooseSceneBy = (ChooseSceneBy)EditorGUILayout.EnumPopup("Choose scene by:", _target.chooseSceneBy);
            if (_target.chooseSceneBy == ChooseSceneBy.Name)
            {
                _target.previousSceneName = EditorGUILayout.TextField("Previous scene:", _target.previousSceneName);
            }
            else
            {
                _target.previousScene = EditorGUILayout.IntField("Previous scene:", _target.previousScene);
            }
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginVertical("Button");
            EditorGUILayout.LabelField("Camera settings", EditorStyles.boldLabel);
            _target.cameraOnStart = (_Camera)EditorGUILayout.ObjectField("Camera on start:", _target.cameraOnStart, typeof(_Camera), true);
            _target.fadeInOnStart = EditorGUILayout.Toggle("Fade in on start?", _target.fadeInOnStart);
            if (_target.fadeInOnStart)
            {
                _target.fadeSpeed = EditorGUILayout.FloatField("Fade speed:", _target.fadeSpeed);
            }
            EditorGUILayout.EndVertical();

            UnityVersionHandler.CustomSetDirty(_target);
        }
Esempio n. 9
0
        /**
         * <summary>Creates a new instance of the 'Scene: Change setting' Action, set to change the default PlayerStart</summary>
         * <param name = "newPlayerStart">The new PlayerStart</param>
         * <returns>The generated Action</returns>
         */
        public static ActionNavMesh CreateNew_ChangeDefaultPlayerStart(PlayerStart newPlayerStart)
        {
            ActionNavMesh newAction = (ActionNavMesh)CreateInstance <ActionNavMesh>();

            newAction.sceneSetting = SceneSetting.DefaultPlayerStart;
            newAction.playerStart  = newPlayerStart;
            return(newAction);
        }
        /**
         * <summary>Creates a new instance of the 'Player: Teleport inactive' Action</summary>
         * <param name = "playerID">The ID number of the Player to teleport</param>
         * <param name = "newTransform">The new Transform for the Player to take</param>
         * <param name = "newCamera">If set, the camera that will be active when the Player is next switched to</param>
         * <returns>The generated Action</returns>
         */
        public static ActionPlayerTeleportInactive CreateNew(int playerID, PlayerStart newPlayerStart, _Camera newCamera = null)
        {
            ActionPlayerTeleportInactive newAction = (ActionPlayerTeleportInactive)CreateInstance <ActionPlayerTeleportInactive>();

            newAction.playerID     = playerID;
            newAction.newTransform = newPlayerStart;
            return(newAction);
        }
Esempio n. 11
0
        protected void FindPlayerStart()
        {
            PlayerStart playerStart = GetPlayerStart();

            if (playerStart != null)
            {
                playerStart.SetPlayerStart();
            }
        }
Esempio n. 12
0
        private void UnloadPlayerStart(int playerStartInt, SceneSettings sceneSettings)
        {
            PlayerStart playerStart = ConstantID.GetComponent <PlayerStart> (playerStartInt, sceneSettings.gameObject.scene);

            if (playerStart)
            {
                sceneSettings.defaultPlayerStart = playerStart;
            }
        }
Esempio n. 13
0
        private void FindPlayerStart()
        {
            PlayerStart playerStart = GetPlayerStart();

            if (playerStart != null)
            {
                playerStart.SetPlayerStart();
            }
        }
Esempio n. 14
0
        private void UnloadPlayerStart(int playerStartInt, SceneSettings sceneSettings)
        {
            PlayerStart playerStart = Serializer.returnComponent <PlayerStart> (playerStartInt, sceneSettings.gameObject);

            if (playerStart && sceneSettings)
            {
                sceneSettings.defaultPlayerStart = playerStart;
            }
        }
Esempio n. 15
0
        private void UnloadPlayerStart(int playerStartInt)
        {
            PlayerStart playerStart = Serializer.returnComponent <PlayerStart> (playerStartInt);

            if (playerStart && KickStarter.sceneSettings)
            {
                KickStarter.sceneSettings.defaultPlayerStart = playerStart;
            }
        }
Esempio n. 16
0
        /**
         * <summary>Finds the appropriate PlayerStart to refer to, based on the last scene's conditions, and sets the Player there</summary>
         * <param name = "onlySetCamera">If True, then the Player will not be moved - and only the camera will be switched to, if one was assigned</param>
         **/
        public void AssignPlayerStart()
        {
            PlayerStart playerStart = GetPlayerStart(KickStarter.saveSystem.CurrentPlayerID);

            if (playerStart != null)
            {
                playerStart.PlacePlayerAt();
            }
            else if (KickStarter.player != null)
            {
                ACDebug.LogWarning("No default PlayerStart was found.  The Player and camera may not be set up correctly until one is defined in the Scene Manager.");
            }
        }
Esempio n. 17
0
        /**
         * <summary>Updates the record of the Player's current position</summary>
         * <param name = "newSceneIndex">The scene in which to place the Player in</param>
         * <param name = "teleportPlayerStartMethod">How to select which PlayerStart to appear at (SceneDefault, BasedOnPrevious, EnteredHere)</param>
         * <param name = "playerStartID">The Constant ID value of the PlayerStart for the Player to appear at</param>
         */
        public void UpdatePosition(int newSceneIndex, TeleportPlayerStartMethod teleportPlayerStartMethod, int playerStartID)
        {
            UpdateCurrentAndShiftPrevious(newSceneIndex);

            tempPlayerStart = 0;
            if (newSceneIndex == SceneChanger.CurrentSceneIndex)
            {
                // Updating position to the current scene
                PlayerStart playerStart = null;

                switch (teleportPlayerStartMethod)
                {
                case TeleportPlayerStartMethod.BasedOnPrevious:
                    playerStart = KickStarter.sceneSettings.GetPlayerStart(playerID);
                    break;

                case TeleportPlayerStartMethod.EnteredHere:
                    if (playerStartID != 0)
                    {
                        playerStart = ConstantID.GetComponent <PlayerStart> (playerStartID);
                    }
                    break;

                case TeleportPlayerStartMethod.SceneDefault:
                    playerStart = KickStarter.sceneSettings.defaultPlayerStart;
                    break;

                default:
                    break;
                }

                if (playerStart)
                {
                    UpdatePositionFromPlayerStart(playerStart);
                }
                else if (teleportPlayerStartMethod == TeleportPlayerStartMethod.EnteredHere && playerStartID != 0)
                {
                    ACDebug.LogWarning("Cannot find PlayerStart with Constant ID = " + playerStartID + " for Player ID = " + playerID + " in the current scene.");
                }
                else
                {
                    ACDebug.LogWarning("Cannot find suitable PlayerStart for Player ID = " + playerID + " in the current scene");
                }
            }
            else
            {
                // Position is being set in another scene, so keep a record of it
                tempTeleportPlayerStartMethod = teleportPlayerStartMethod;
                tempPlayerStart = (teleportPlayerStartMethod == TeleportPlayerStartMethod.EnteredHere) ? playerStartID : -1;
            }
        }
Esempio n. 18
0
        public override void OnInspectorGUI()
        {
            PlayerStart _target = (PlayerStart)target;

            if (KickStarter.sceneSettings != null && KickStarter.sceneSettings.defaultPlayerStart == _target)
            {
                EditorGUILayout.HelpBox("This PlayerStart is the scene's default, and will be used if a more appropriate one is not found.", MessageType.Info);
            }

            CustomGUILayout.BeginVertical();
            EditorGUILayout.LabelField("Previous scene activation", EditorStyles.boldLabel);
            _target.chooseSceneBy = (ChooseSceneBy)CustomGUILayout.EnumPopup("Choose scene by:", _target.chooseSceneBy, "", "The way in which the previous scene is identified by");
            if (_target.chooseSceneBy == ChooseSceneBy.Name)
            {
                _target.previousSceneName = CustomGUILayout.TextField("Previous scene:", _target.previousSceneName, "", "The name of the previous scene to check for");
            }
            else
            {
                _target.previousScene = CustomGUILayout.IntField("Previous scene:", _target.previousScene, "", "The build-index number of the previous scene to check for");
            }

            if (KickStarter.settingsManager != null && KickStarter.settingsManager.playerSwitching == PlayerSwitching.Allow)
            {
                _target.limitByActive = (PlayerStartActiveOption)CustomGUILayout.EnumPopup("Limit by active:", _target.limitByActive, "", "Lets you limit activation to active or inactive Players only");

                _target.limitByPlayer = CustomGUILayout.Toggle("Limit by Player?", _target.limitByPlayer, "", "If True, then only specific Players can use this when entering from a previous scene");
                if (_target.limitByPlayer)
                {
                    _target.playerIDs = ChoosePlayerGUI(_target.playerIDs);
                }
            }

            CustomGUILayout.EndVertical();

            CustomGUILayout.BeginVertical();
            EditorGUILayout.LabelField("Camera settings", EditorStyles.boldLabel);
            _target.cameraOnStart = (_Camera)CustomGUILayout.ObjectField <_Camera> ("Camera on start:", _target.cameraOnStart, true, "", "The AC _Camera that should be made active when the Player starts the scene from this point");
            _target.fadeInOnStart = CustomGUILayout.Toggle("Fade in on activate?", _target.fadeInOnStart, "", "If True, then the MainCamera will fade in when the Player starts the scene from this point");
            if (_target.fadeInOnStart)
            {
                _target.fadeSpeed = CustomGUILayout.FloatField("Fade speed:", _target.fadeSpeed, "", "The speed of the fade");
            }
            CustomGUILayout.EndVertical();

            UnityVersionHandler.CustomSetDirty(_target);
        }
Esempio n. 19
0
        private void UpdatePositionFromPlayerStart(PlayerStart playerStart)
        {
            if (playerStart)
            {
                tempPlayerStart = 0;

                playerLocX = playerStart.Position.x;
                playerLocY = playerStart.Position.y;
                playerLocZ = playerStart.Position.z;
                playerRotY = playerStart.ForwardAngle;

                gameCamera = 0;

                if (playerStart.cameraOnStart)
                {
                    ConstantID cameraID = playerStart.cameraOnStart.GetComponent <ConstantID> ();
                    if (cameraID)
                    {
                        gameCamera = cameraID.constantID;
                    }
                    else
                    {
                        ACDebug.LogWarning("Cannot set Player ID = " + playerID + "'s active camera because " + playerStart.cameraOnStart + " has no ConstantID component.", playerStart.cameraOnStart);
                    }
                }
                else if (KickStarter.sceneSettings.defaultPlayerStart && KickStarter.sceneSettings.defaultPlayerStart.cameraOnStart)
                {
                    ConstantID cameraID = KickStarter.sceneSettings.defaultPlayerStart.cameraOnStart.GetComponent <ConstantID> ();
                    if (cameraID)
                    {
                        gameCamera = cameraID.constantID;
                    }
                    else
                    {
                        ACDebug.LogWarning("Cannot set Player ID = " + playerID + "'s active camera because " + playerStart.cameraOnStart + " has no ConstantID component.", playerStart.cameraOnStart);
                    }
                }
                else
                {
                    ACDebug.LogWarning("Cannot set Player ID = " + playerID + "'s active camera because PlayerStart " + playerStart.name + " has no Camera On Start with a ConstantID component.", playerStart);
                }
            }
        }
Esempio n. 20
0
        public override void AssignValues(List <ActionParameter> parameters)
        {
            if (sceneSettings == null)
            {
                return;
            }

            switch (sceneSetting)
            {
            case SceneSetting.DefaultNavMesh:
                if (KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.PolygonCollider && changeNavMeshMethod == ChangeNavMeshMethod.ChangeNumberOfHoles)
                {
                    runtimeHole        = AssignFile <PolygonCollider2D> (parameters, parameterID, constantID, hole);
                    runtimeReplaceHole = AssignFile <PolygonCollider2D> (parameters, replaceParameterID, replaceConstantID, replaceHole);
                    runtimeNewNavMesh  = null;
                }
                else
                {
                    runtimeHole        = null;
                    runtimeReplaceHole = null;
                    runtimeNewNavMesh  = AssignFile <NavigationMesh> (parameters, parameterID, constantID, newNavMesh);
                }
                break;

            case SceneSetting.DefaultPlayerStart:
                runtimePlayerStart = AssignFile <PlayerStart> (parameters, parameterID, constantID, playerStart);
                break;

            case SceneSetting.SortingMap:
                runtimeSortingMap = AssignFile <SortingMap> (parameters, parameterID, constantID, sortingMap);
                break;

            case SceneSetting.TintMap:
                runtimeTintMap = AssignFile <TintMap> (parameters, parameterID, constantID, tintMap);
                break;

            case SceneSetting.OnLoadCutscene:
            case SceneSetting.OnStartCutscene:
                runtimeCutscene = AssignFile <Cutscene> (parameters, parameterID, constantID, cutscene);
                break;
            }
        }
Esempio n. 21
0
        private void FindPlayerStart()
        {
            PlayerStart playerStart = GetPlayerStart();

            if (playerStart != null)
            {
                playerStart.SetPlayerStart();
            }

            bool playedGlobal = KickStarter.stateHandler.PlayGlobalOnStart();

            if (cutsceneOnStart != null)
            {
                if (!playedGlobal)
                {
                    // Place in a temporary cutscene to set everything up
                    KickStarter.stateHandler.gameState = GameState.Cutscene;
                }
                Invoke("RunCutsceneOnStart", 0.01f);
            }
        }
Esempio n. 22
0
        public void InitialiseObjects()
        {
            CreateFolder("_Cameras");
            CreateFolder("_Cutscenes");
            CreateFolder("_DialogueOptions");
            CreateFolder("_Interactions");
            CreateFolder("_Lights");
            CreateFolder("_Logic");
            CreateFolder("_Moveables");
            CreateFolder("_Navigation");
            CreateFolder("_NPCs");
            CreateFolder("_Sounds");
            CreateFolder("_SetGeometry");
            CreateFolder("_UI");

            // Create subfolders
            CreateSubFolder("_Cameras", "_GameCameras");

            CreateSubFolder("_Logic", "_ArrowPrompts");
            CreateSubFolder("_Logic", "_Conversations");
            CreateSubFolder("_Logic", "_Containers");
            CreateSubFolder("_Logic", "_Hotspots");
            CreateSubFolder("_Logic", "_Triggers");

            CreateSubFolder("_Moveables", "_Tracks");

            CreateSubFolder("_Navigation", "_CollisionCubes");
            CreateSubFolder("_Navigation", "_CollisionCylinders");
            CreateSubFolder("_Navigation", "_Markers");
            CreateSubFolder("_Navigation", "_NavMeshSegments");
            CreateSubFolder("_Navigation", "_NavMesh");
            CreateSubFolder("_Navigation", "_Paths");
            CreateSubFolder("_Navigation", "_PlayerStarts");
            CreateSubFolder("_Navigation", "_SortingMaps");

            // Delete default main camera
            if (GameObject.FindWithTag(Tags.mainCamera))
            {
                GameObject mainCam = GameObject.FindWithTag(Tags.mainCamera);
                if (mainCam.GetComponent <MainCamera>() == null)
                {
                    DestroyImmediate(mainCam);
                }
            }

            // Create main camera
            SettingsManager settingsManager = AdvGame.GetReferences().settingsManager;
            GameObject      mainCamOb       = AddPrefab("Automatic", "MainCamera", false, false, false);

            PrefabUtility.DisconnectPrefabInstance(mainCamOb);
            PutInFolder(GameObject.FindWithTag(Tags.mainCamera), "_Cameras");
            if (settingsManager && settingsManager.IsUnity2D())
            {
                Camera.main.orthographic = true;
            }

            // Create Background Camera (if 2.5D)
            if (settingsManager && settingsManager.cameraPerspective == CameraPerspective.TwoPointFiveD)
            {
                CreateSubFolder("_SetGeometry", "_BackgroundImages");
                GameObject newOb = AddPrefab("Automatic", "BackgroundCamera", false, false, false);
                PutInFolder(newOb, "_Cameras");
            }

            // Create Game engine
            AddPrefab("Automatic", "GameEngine", false, false, false);

            // Assign Player Start
            if (KickStarter.sceneSettings && KickStarter.sceneSettings.defaultPlayerStart == null)
            {
                string playerStartPrefab = "PlayerStart";
                if (settingsManager != null && settingsManager.IsUnity2D())
                {
                    playerStartPrefab += "2D";
                }

                PlayerStart playerStart = AddPrefab("Navigation", playerStartPrefab, true, false, true).GetComponent <PlayerStart>();
                KickStarter.sceneSettings.defaultPlayerStart = playerStart;
            }

            // Pathfinding method
            if (settingsManager != null && settingsManager.IsUnity2D())
            {
                KickStarter.sceneSettings.navigationMethod = AC_NavigationMethod.PolygonCollider;
                KickStarter.navigationManager.ResetEngine();
            }
        }
Esempio n. 23
0
        public void InitialiseObjects(bool createFolders = true)
        {
            if (createFolders)
            {
                CreateFolder("_Cameras");
                CreateFolder("_Cutscenes");
                CreateFolder("_DialogueOptions");
                CreateFolder("_Interactions");
                CreateFolder("_Lights");
                CreateFolder("_Logic");
                CreateFolder("_Moveables");
                CreateFolder("_Navigation");
                CreateFolder("_NPCs");
                CreateFolder("_Sounds");
                CreateFolder("_SetGeometry");
                CreateFolder("_UI");

                // Create subfolders
                CreateSubFolder("_Cameras", "_GameCameras");

                CreateSubFolder("_Logic", "_ArrowPrompts");
                CreateSubFolder("_Logic", "_Conversations");
                CreateSubFolder("_Logic", "_Containers");
                CreateSubFolder("_Logic", "_Hotspots");
                CreateSubFolder("_Logic", "_Triggers");

                CreateSubFolder("_Moveables", "_Tracks");

                CreateSubFolder("_Navigation", "_CollisionCubes");
                CreateSubFolder("_Navigation", "_CollisionCylinders");
                CreateSubFolder("_Navigation", "_Markers");
                CreateSubFolder("_Navigation", "_NavMeshSegments");
                CreateSubFolder("_Navigation", "_NavMesh");
                CreateSubFolder("_Navigation", "_Paths");
                CreateSubFolder("_Navigation", "_PlayerStarts");
                CreateSubFolder("_Navigation", "_SortingMaps");
            }

            // Delete default main camera
            if (GameObject.FindWithTag(Tags.mainCamera))
            {
                GameObject oldMainCam = GameObject.FindWithTag(Tags.mainCamera);

                // Untag UFPS Camera
                if (UltimateFPSIntegration.IsUFPSCamera(oldMainCam.GetComponent <Camera>()))
                {
                    oldMainCam.tag = "Untagged";
                    Debug.Log("Untagged UFPS camera '" + oldMainCam.name + "' as MainCamera, to make way for Adventure Creator MainCamera.");
                }
                else if (oldMainCam.GetComponent <MainCamera>() == null)
                {
                    if (oldMainCam.GetComponent <Camera>())
                    {
                        oldMainCam.AddComponent <MainCamera>();

                        string     camPrefabfileName = assetFolder + "Automatic" + Path.DirectorySeparatorChar.ToString() + "MainCamera.prefab";
                        GameObject camPrefab         = (GameObject)AssetDatabase.LoadAssetAtPath(camPrefabfileName, typeof(GameObject));
                        Texture2D  prefabFadeTexture = camPrefab.GetComponent <MainCamera>().fadeTexture;

                        oldMainCam.GetComponent <MainCamera>().Initialise(prefabFadeTexture);

                        PutInFolder(GameObject.FindWithTag(Tags.mainCamera), "_Cameras");
                        Debug.Log("'" + oldMainCam.name + "' has been converted to an Adventure Creator MainCamera.");
                    }
                    else
                    {
                        Debug.Log("Removed old MainCamera '" + oldMainCam.name + "' from scene, as it had no Camera component.");
                        DestroyImmediate(oldMainCam);
                    }
                }
            }

            // Create main camera if none exists
            SettingsManager settingsManager = AdvGame.GetReferences().settingsManager;

            if (!GameObject.FindWithTag(Tags.mainCamera))
            {
                GameObject mainCamOb = AddPrefab("Automatic", "MainCamera", false, false, false);
                PrefabUtility.DisconnectPrefabInstance(mainCamOb);
                PutInFolder(mainCamOb, "_Cameras");
                if (settingsManager && settingsManager.IsUnity2D())
                {
                    Camera.main.orthographic = true;
                }
            }

            // Create Background Camera (if 2.5D)
            if (settingsManager && settingsManager.cameraPerspective == CameraPerspective.TwoPointFiveD)
            {
                CreateSubFolder("_SetGeometry", "_BackgroundImages");
                GameObject newOb = AddPrefab("Automatic", "BackgroundCamera", false, false, false);
                PutInFolder(newOb, "_Cameras");
            }

            // Create Game engine
            AddPrefab("Automatic", "GameEngine", false, false, false);

            // Assign Player Start
            if (KickStarter.sceneSettings && KickStarter.sceneSettings.defaultPlayerStart == null)
            {
                string playerStartPrefab = "PlayerStart";
                if (settingsManager != null && settingsManager.IsUnity2D())
                {
                    playerStartPrefab += "2D";
                }

                PlayerStart playerStart = AddPrefab("Navigation", playerStartPrefab, true, false, true).GetComponent <PlayerStart>();
                KickStarter.sceneSettings.defaultPlayerStart = playerStart;
            }

            // Pathfinding method
            if (settingsManager != null && settingsManager.IsUnity2D())
            {
                KickStarter.sceneSettings.navigationMethod = AC_NavigationMethod.PolygonCollider;
                KickStarter.navigationManager.ResetEngine();
            }
        }
Esempio n. 24
0
        override public void ShowGUI(List <ActionParameter> parameters)
        {
            if (KickStarter.sceneSettings == null)
            {
                return;
            }

            sceneSetting = (SceneSetting)EditorGUILayout.EnumPopup("Scene setting to change:", sceneSetting);

            if (sceneSetting == SceneSetting.DefaultNavMesh)
            {
                if (KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.meshCollider || KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.PolygonCollider)
                {
                    if (KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.PolygonCollider)
                    {
                        changeNavMeshMethod = (ChangeNavMeshMethod)EditorGUILayout.EnumPopup("Change NavMesh method:", changeNavMeshMethod);
                    }

                    if (KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.meshCollider || changeNavMeshMethod == ChangeNavMeshMethod.ChangeNavMesh)
                    {
                        parameterID = Action.ChooseParameterGUI("New NavMesh:", parameters, parameterID, ParameterType.GameObject);
                        if (parameterID >= 0)
                        {
                            constantID = 0;
                            newNavMesh = null;
                        }
                        else
                        {
                            newNavMesh = (NavigationMesh)EditorGUILayout.ObjectField("New NavMesh:", newNavMesh, typeof(NavigationMesh), true);

                            constantID = FieldToID <NavigationMesh> (newNavMesh, constantID);
                            newNavMesh = IDToField <NavigationMesh> (newNavMesh, constantID, false);
                        }
                    }
                    else if (changeNavMeshMethod == ChangeNavMeshMethod.ChangeNumberOfHoles)
                    {
                        holeAction = (InvAction)EditorGUILayout.EnumPopup("Add or remove hole:", holeAction);
                        string _label = "Hole to add:";
                        if (holeAction == InvAction.Remove)
                        {
                            _label = "Hole to remove:";
                        }

                        parameterID = Action.ChooseParameterGUI(_label, parameters, parameterID, ParameterType.GameObject);
                        if (parameterID >= 0)
                        {
                            constantID = 0;
                            hole       = null;
                        }
                        else
                        {
                            hole = (PolygonCollider2D)EditorGUILayout.ObjectField(_label, hole, typeof(PolygonCollider2D), true);

                            constantID = FieldToID <PolygonCollider2D> (hole, constantID);
                            hole       = IDToField <PolygonCollider2D> (hole, constantID, false);
                        }

                        if (holeAction == InvAction.Replace)
                        {
                            replaceParameterID = Action.ChooseParameterGUI("Hole to remove:", parameters, replaceParameterID, ParameterType.GameObject);
                            if (replaceParameterID >= 0)
                            {
                                replaceConstantID = 0;
                                replaceHole       = null;
                            }
                            else
                            {
                                replaceHole = (PolygonCollider2D)EditorGUILayout.ObjectField("Hole to remove:", replaceHole, typeof(PolygonCollider2D), true);

                                replaceConstantID = FieldToID <PolygonCollider2D> (replaceHole, replaceConstantID);
                                replaceHole       = IDToField <PolygonCollider2D> (replaceHole, replaceConstantID, false);
                            }
                        }
                    }
                }
                else
                {
                    EditorGUILayout.HelpBox("This action is not compatible with the Unity Navigation pathfinding method, as set in the Scene Manager.", MessageType.Warning);
                }
            }
            else if (sceneSetting == SceneSetting.DefaultPlayerStart)
            {
                parameterID = Action.ChooseParameterGUI("New default PlayerStart:", parameters, parameterID, ParameterType.GameObject);
                if (parameterID >= 0)
                {
                    constantID  = 0;
                    playerStart = null;
                }
                else
                {
                    playerStart = (PlayerStart)EditorGUILayout.ObjectField("New default PlayerStart:", playerStart, typeof(PlayerStart), true);

                    constantID  = FieldToID <PlayerStart> (playerStart, constantID);
                    playerStart = IDToField <PlayerStart> (playerStart, constantID, false);
                }
            }
            else if (sceneSetting == SceneSetting.SortingMap)
            {
                parameterID = Action.ChooseParameterGUI("New SortingMap:", parameters, parameterID, ParameterType.GameObject);
                if (parameterID >= 0)
                {
                    constantID = 0;
                    sortingMap = null;
                }
                else
                {
                    sortingMap = (SortingMap)EditorGUILayout.ObjectField("New SortingMap:", sortingMap, typeof(SortingMap), true);

                    constantID = FieldToID <SortingMap> (sortingMap, constantID);
                    sortingMap = IDToField <SortingMap> (sortingMap, constantID, false);
                }
            }
            else if (sceneSetting == SceneSetting.TintMap)
            {
                parameterID = Action.ChooseParameterGUI("New TintMap:", parameters, parameterID, ParameterType.GameObject);
                if (parameterID >= 0)
                {
                    constantID = 0;
                    tintMap    = null;
                }
                else
                {
                    tintMap = (TintMap)EditorGUILayout.ObjectField("New TintMap:", tintMap, typeof(TintMap), true);

                    constantID = FieldToID <TintMap> (tintMap, constantID);
                    tintMap    = IDToField <TintMap> (tintMap, constantID, false);
                }
            }
            else if (sceneSetting == SceneSetting.OnLoadCutscene)
            {
                parameterID = Action.ChooseParameterGUI("New OnLoad cutscene:", parameters, parameterID, ParameterType.GameObject);
                if (parameterID >= 0)
                {
                    constantID = 0;
                    cutscene   = null;
                }
                else
                {
                    cutscene = (Cutscene)EditorGUILayout.ObjectField("New OnLoad custscne:", cutscene, typeof(Cutscene), true);

                    constantID = FieldToID <Cutscene> (cutscene, constantID);
                    cutscene   = IDToField <Cutscene> (cutscene, constantID, false);
                }
            }
            else if (sceneSetting == SceneSetting.OnStartCutscene)
            {
                parameterID = Action.ChooseParameterGUI("New OnStart cutscene:", parameters, parameterID, ParameterType.GameObject);
                if (parameterID >= 0)
                {
                    constantID = 0;
                    cutscene   = null;
                }
                else
                {
                    cutscene = (Cutscene)EditorGUILayout.ObjectField("New OnStart cutscene:", cutscene, typeof(Cutscene), true);

                    constantID = FieldToID <Cutscene> (cutscene, constantID);
                    cutscene   = IDToField <Cutscene> (cutscene, constantID, false);
                }
            }

            AfterRunningOption();
        }
 public override void AssignValues(List <ActionParameter> parameters)
 {
     playerID           = AssignInteger(parameters, playerIDParameterID, playerID);
     runtimePlayerStart = AssignFile(parameters, newTransformParameterID, newTransformConstantID, newTransform);
 }
        public override void ShowGUI(List <ActionParameter> parameters)
        {
            if (KickStarter.settingsManager != null)
            {
                if (KickStarter.settingsManager.playerSwitching == PlayerSwitching.DoNotAllow)
                {
                    EditorGUILayout.HelpBox("This Action requires Player Switching to be allowed, as set in the Settings Manager.", MessageType.Info);
                    return;
                }

                if (KickStarter.settingsManager.players.Count == 0)
                {
                    EditorGUILayout.HelpBox("No players are defined in the Settings Manager.", MessageType.Warning);
                    return;
                }

                playerIDParameterID = Action.ChooseParameterGUI("New Player ID:", parameters, playerIDParameterID, ParameterType.Integer);
                if (playerIDParameterID == -1)
                {
                    // Create a string List of the field's names (for the PopUp box)
                    List <string> labelList = new List <string>();

                    int i            = 0;
                    int playerNumber = -1;

                    foreach (PlayerPrefab playerPrefab in KickStarter.settingsManager.players)
                    {
                        if (playerPrefab.playerOb != null)
                        {
                            labelList.Add(playerPrefab.playerOb.name);
                        }
                        else
                        {
                            labelList.Add("(Undefined prefab)");
                        }

                        // If a player has been removed, make sure selected player is still valid
                        if (playerPrefab.ID == playerID)
                        {
                            playerNumber = i;
                        }

                        i++;
                    }

                    if (playerNumber == -1)
                    {
                        // Wasn't found (item was possibly deleted), so revert to zero
                        if (playerID > 0)
                        {
                            LogWarning("Previously chosen Player no longer exists!");
                        }

                        playerNumber = 0;
                        playerID     = 0;
                    }

                    playerNumber = EditorGUILayout.Popup("Player:", playerNumber, labelList.ToArray());
                    playerID     = KickStarter.settingsManager.players[playerNumber].ID;
                }

                moveToCurrentScene = EditorGUILayout.Toggle("Move to current scene?", moveToCurrentScene);
                if (moveToCurrentScene)
                {
                    teleportPlayerStartMethod = (TeleportPlayerStartMethod)EditorGUILayout.EnumPopup("PlayerStart:", teleportPlayerStartMethod);

                    if (teleportPlayerStartMethod == TeleportPlayerStartMethod.EnteredHere)
                    {
                        newTransformParameterID = Action.ChooseParameterGUI("New PlayerStart:", parameters, newTransformParameterID, ParameterType.GameObject);
                        if (newTransformParameterID >= 0)
                        {
                            newTransformConstantID = 0;
                            newTransform           = null;
                        }
                        else
                        {
                            newTransform = (PlayerStart)EditorGUILayout.ObjectField("New PlayerStart:", newTransform, typeof(PlayerStart), true);

                            newTransformConstantID = FieldToID(newTransform, newTransformConstantID);
                            newTransform           = IDToField(newTransform, newTransformConstantID, true);
                        }
                    }
                }
                else
                {
                    chooseSceneBy = (ChooseSceneBy)EditorGUILayout.EnumPopup("Choose scene by:", chooseSceneBy);
                    switch (chooseSceneBy)
                    {
                    case ChooseSceneBy.Number:
                        newSceneIndex = EditorGUILayout.IntField("New scene index:", newSceneIndex);
                        break;

                    case ChooseSceneBy.Name:
                        newSceneName = EditorGUILayout.TextField("New scene name:", newSceneName);
                        break;

                    default:
                        break;
                    }

                    teleportPlayerStartMethod = (TeleportPlayerStartMethod)EditorGUILayout.EnumPopup("PlayerStart:", teleportPlayerStartMethod);

                    if (teleportPlayerStartMethod == TeleportPlayerStartMethod.EnteredHere)
                    {
                        newTransformParameterID = -1;
                        newTransform            = (PlayerStart)EditorGUILayout.ObjectField("New PlayerStart:", newTransform, typeof(PlayerStart), true);

                        newTransformConstantID = FieldToID(newTransform, newTransformConstantID, true);
                        newTransform           = IDToField(newTransform, newTransformConstantID, true);
                    }
                }
            }
            else
            {
                EditorGUILayout.HelpBox("No Settings Manager assigned!", MessageType.Warning);
            }

            AfterRunningOption();
        }
Esempio n. 27
0
        public override void ShowGUI(List<ActionParameter> parameters)
        {
            if (KickStarter.sceneSettings == null)
            {
                return;
            }

            sceneSetting = (SceneSetting) EditorGUILayout.EnumPopup ("Scene setting to change:", sceneSetting);

            if (sceneSetting == SceneSetting.DefaultNavMesh)
            {
                if (KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.meshCollider || KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.PolygonCollider)
                {
                    if (KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.PolygonCollider)
                    {
                        changeNavMeshMethod = (ChangeNavMeshMethod) EditorGUILayout.EnumPopup ("Change NavMesh method:", changeNavMeshMethod);
                    }

                    if (KickStarter.sceneSettings.navigationMethod == AC_NavigationMethod.meshCollider || changeNavMeshMethod == ChangeNavMeshMethod.ChangeNavMesh)
                    {
                        parameterID = Action.ChooseParameterGUI ("New NavMesh:", parameters, parameterID, ParameterType.GameObject);
                        if (parameterID >= 0)
                        {
                            constantID = 0;
                            newNavMesh = null;
                        }
                        else
                        {
                            newNavMesh = (NavigationMesh) EditorGUILayout.ObjectField ("New NavMesh:", newNavMesh, typeof (NavigationMesh), true);

                            constantID = FieldToID <NavigationMesh> (newNavMesh, constantID);
                            newNavMesh = IDToField <NavigationMesh> (newNavMesh, constantID, false);
                        }
                    }
                    else if (changeNavMeshMethod == ChangeNavMeshMethod.ChangeNumberOfHoles)
                    {
                        holeAction = (InvAction) EditorGUILayout.EnumPopup ("Add or remove hole:", holeAction);
                        string _label = "Hole to add:";
                        if (holeAction == InvAction.Remove)
                        {
                            _label = "Hole to remove:";
                        }

                        parameterID = Action.ChooseParameterGUI (_label, parameters, parameterID, ParameterType.GameObject);
                        if (parameterID >= 0)
                        {
                            constantID = 0;
                            hole = null;
                        }
                        else
                        {
                            hole = (PolygonCollider2D) EditorGUILayout.ObjectField (_label, hole, typeof (PolygonCollider2D), true);

                            constantID = FieldToID <PolygonCollider2D> (hole, constantID);
                            hole = IDToField <PolygonCollider2D> (hole, constantID, false);
                        }

                        if (holeAction == InvAction.Replace)
                        {
                            replaceParameterID = Action.ChooseParameterGUI ("Hole to remove:", parameters, replaceParameterID, ParameterType.GameObject);
                            if (replaceParameterID >= 0)
                            {
                                replaceConstantID = 0;
                                replaceHole = null;
                            }
                            else
                            {
                                replaceHole = (PolygonCollider2D) EditorGUILayout.ObjectField ("Hole to remove:", replaceHole, typeof (PolygonCollider2D), true);

                                replaceConstantID = FieldToID <PolygonCollider2D> (replaceHole, replaceConstantID);
                                replaceHole = IDToField <PolygonCollider2D> (replaceHole, replaceConstantID, false);
                            }
                        }
                    }
                }
                else
                {
                    EditorGUILayout.HelpBox ("This action is not compatible with the Unity Navigation pathfinding method, as set in the Scene Manager.", MessageType.Warning);
                }
            }
            else if (sceneSetting == SceneSetting.DefaultPlayerStart)
            {
                parameterID = Action.ChooseParameterGUI ("New default PlayerStart:", parameters, parameterID, ParameterType.GameObject);
                if (parameterID >= 0)
                {
                    constantID = 0;
                    playerStart = null;
                }
                else
                {
                    playerStart = (PlayerStart) EditorGUILayout.ObjectField ("New default PlayerStart:", playerStart, typeof (PlayerStart), true);

                    constantID = FieldToID <PlayerStart> (playerStart, constantID);
                    playerStart = IDToField <PlayerStart> (playerStart, constantID, false);
                }
            }
            else if (sceneSetting == SceneSetting.SortingMap)
            {
                parameterID = Action.ChooseParameterGUI ("New SortingMap:", parameters, parameterID, ParameterType.GameObject);
                if (parameterID >= 0)
                {
                    constantID = 0;
                    sortingMap = null;
                }
                else
                {
                    sortingMap = (SortingMap) EditorGUILayout.ObjectField ("New SortingMap:", sortingMap, typeof (SortingMap), true);

                    constantID = FieldToID <SortingMap> (sortingMap, constantID);
                    sortingMap = IDToField <SortingMap> (sortingMap, constantID, false);
                }
            }
            else if (sceneSetting == SceneSetting.TintMap)
            {
                parameterID = Action.ChooseParameterGUI ("New TintMap:", parameters, parameterID, ParameterType.GameObject);
                if (parameterID >= 0)
                {
                    constantID = 0;
                    tintMap = null;
                }
                else
                {
                    tintMap = (TintMap) EditorGUILayout.ObjectField ("New TintMap:", tintMap, typeof (TintMap), true);

                    constantID = FieldToID <TintMap> (tintMap, constantID);
                    tintMap = IDToField <TintMap> (tintMap, constantID, false);
                }
            }
            else if (sceneSetting == SceneSetting.OnLoadCutscene)
            {
                parameterID = Action.ChooseParameterGUI ("New OnLoad cutscene:", parameters, parameterID, ParameterType.GameObject);
                if (parameterID >= 0)
                {
                    constantID = 0;
                    cutscene = null;
                }
                else
                {
                    cutscene = (Cutscene) EditorGUILayout.ObjectField ("New OnLoad custscne:", cutscene, typeof (Cutscene), true);

                    constantID = FieldToID <Cutscene> (cutscene, constantID);
                    cutscene = IDToField <Cutscene> (cutscene, constantID, false);
                }
            }
            else if (sceneSetting == SceneSetting.OnStartCutscene)
            {
                parameterID = Action.ChooseParameterGUI ("New OnStart cutscene:", parameters, parameterID, ParameterType.GameObject);
                if (parameterID >= 0)
                {
                    constantID = 0;
                    cutscene = null;
                }
                else
                {
                    cutscene = (Cutscene) EditorGUILayout.ObjectField ("New OnStart cutscene:", cutscene, typeof (Cutscene), true);

                    constantID = FieldToID <Cutscene> (cutscene, constantID);
                    cutscene = IDToField <Cutscene> (cutscene, constantID, false);
                }
            }

            AfterRunningOption ();
        }
Esempio n. 28
0
        /**
         * <summary>Updates the record of the Player's current position to the current scene</summary>
         * <param name = "teleportPlayerStartMethod">How to select which PlayerStart to appear at (SceneDefault, BasedOnPrevious, EnteredHere)</param>
         * <param name = "playerStart">The PlayerStart for the Player to appear at</param>
         */
        public void UpdatePosition(TeleportPlayerStartMethod teleportPlayerStartMethod, PlayerStart playerStart)
        {
            UpdateCurrentAndShiftPrevious(SceneChanger.CurrentSceneIndex);

            tempPlayerStart = 0;

            if (teleportPlayerStartMethod == TeleportPlayerStartMethod.SceneDefault)
            {
                playerStart = KickStarter.sceneSettings.defaultPlayerStart;
            }
            else if (teleportPlayerStartMethod == TeleportPlayerStartMethod.BasedOnPrevious)
            {
                playerStart = KickStarter.sceneSettings.GetPlayerStart(playerID);
            }

            UpdatePositionFromPlayerStart(playerStart);
        }
Esempio n. 29
0
        public void ShowGUI()
        {
            GUILayout.Label("Basic structure", EditorStyles.boldLabel);

            if (GUILayout.Button("Organise room objects"))
            {
                InitialiseObjects();
            }

            if (AdvGame.GetReferences().settingsManager == null)
            {
                EditorGUILayout.HelpBox("No Settings Manager defined - cannot display full Editor without it!", MessageType.Warning);
                return;
            }

            if (KickStarter.sceneSettings == null)
            {
                return;
            }

            SettingsManager settingsManager = AdvGame.GetReferences().settingsManager;

            EditorGUILayout.BeginHorizontal();
            newFolderName = EditorGUILayout.TextField(newFolderName);

            if (GUILayout.Button("Create new folder", buttonWidth))
            {
                if (newFolderName != "")
                {
                    GameObject newFolder = new GameObject();

                    if (!newFolderName.StartsWith("_"))
                    {
                        newFolder.name = "_" + newFolderName;
                    }
                    else
                    {
                        newFolder.name = newFolderName;
                    }

                    Undo.RegisterCreatedObjectUndo(newFolder, "Create folder " + newFolder.name);

                    if (Selection.activeGameObject)
                    {
                        newFolder.transform.parent = Selection.activeGameObject.transform;
                    }

                    Selection.activeObject = newFolder;
                }
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Space();

            GUILayout.Label("Scene settings", EditorStyles.boldLabel);
            KickStarter.sceneSettings.navigationMethod = (AC_NavigationMethod)EditorGUILayout.EnumPopup("Pathfinding method:", KickStarter.sceneSettings.navigationMethod);
            KickStarter.navigationManager.ResetEngine();
            if (KickStarter.navigationManager.navigationEngine != null)
            {
                KickStarter.navigationManager.navigationEngine.SceneSettingsGUI();
            }

            if (settingsManager.IsUnity2D() && KickStarter.sceneSettings.navigationMethod != AC_NavigationMethod.PolygonCollider)
            {
                EditorGUILayout.HelpBox("This pathfinding method is not compatible with 'Unity 2D'.", MessageType.Warning);
            }

            EditorGUILayout.BeginHorizontal();
            KickStarter.sceneSettings.defaultPlayerStart = (PlayerStart)EditorGUILayout.ObjectField("Default PlayerStart:", KickStarter.sceneSettings.defaultPlayerStart, typeof(PlayerStart), true);
            if (KickStarter.sceneSettings.defaultPlayerStart == null)
            {
                if (GUILayout.Button("Create", GUILayout.MaxWidth(60f)))
                {
                    PlayerStart newPlayerStart = AddPrefab("Navigation", "PlayerStart", true, false, true).GetComponent <PlayerStart>();
                    newPlayerStart.gameObject.name = "Default PlayerStart";
                    KickStarter.sceneSettings.defaultPlayerStart = newPlayerStart;
                }
            }
            EditorGUILayout.EndHorizontal();
            if (KickStarter.sceneSettings.defaultPlayerStart)
            {
                EditorGUILayout.BeginHorizontal();
                KickStarter.sceneSettings.defaultPlayerStart.cameraOnStart = (_Camera)EditorGUILayout.ObjectField("Default Camera:", KickStarter.sceneSettings.defaultPlayerStart.cameraOnStart, typeof(_Camera), true);
                if (KickStarter.sceneSettings.defaultPlayerStart.cameraOnStart == null)
                {
                    if (GUILayout.Button("Create", GUILayout.MaxWidth(60f)))
                    {
                        if (settingsManager == null || settingsManager.cameraPerspective == CameraPerspective.ThreeD)
                        {
                            GameCamera newCamera = AddPrefab("Camera", "GameCamera", true, false, true).GetComponent <GameCamera>();
                            newCamera.gameObject.name = "NavCam 1";
                            KickStarter.sceneSettings.defaultPlayerStart.cameraOnStart = newCamera;
                        }
                        else if (settingsManager.cameraPerspective == CameraPerspective.TwoD)
                        {
                            GameCamera2D newCamera = AddPrefab("Camera", "GameCamera2D", true, false, true).GetComponent <GameCamera2D>();
                            newCamera.gameObject.name = "NavCam 1";
                            KickStarter.sceneSettings.defaultPlayerStart.cameraOnStart = newCamera;
                        }
                        else if (settingsManager.cameraPerspective == CameraPerspective.TwoPointFiveD)
                        {
                            GameCamera25D newCamera = AddPrefab("Camera", "GameCamera2.5D", true, false, true).GetComponent <GameCamera25D>();
                            newCamera.gameObject.name = "NavCam 1";
                            KickStarter.sceneSettings.defaultPlayerStart.cameraOnStart = newCamera;
                        }
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.BeginHorizontal();
            KickStarter.sceneSettings.sortingMap = (SortingMap)EditorGUILayout.ObjectField("Default Sorting map:", KickStarter.sceneSettings.sortingMap, typeof(SortingMap), true);
            if (KickStarter.sceneSettings.sortingMap == null)
            {
                if (GUILayout.Button("Create", GUILayout.MaxWidth(60f)))
                {
                    SortingMap newSortingMap = AddPrefab("Navigation", "SortingMap", true, false, true).GetComponent <SortingMap>();
                    newSortingMap.gameObject.name        = "Default SortingMap";
                    KickStarter.sceneSettings.sortingMap = newSortingMap;
                }
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.BeginHorizontal();
            KickStarter.sceneSettings.defaultSound = (Sound)EditorGUILayout.ObjectField("Default Sound prefab:", KickStarter.sceneSettings.defaultSound, typeof(Sound), true);
            if (KickStarter.sceneSettings.defaultSound == null)
            {
                if (GUILayout.Button("Create", GUILayout.MaxWidth(60f)))
                {
                    Sound newSound = AddPrefab("Logic", "Sound", true, false, true).GetComponent <Sound>();
                    newSound.gameObject.name = "Default Sound";
                    KickStarter.sceneSettings.defaultSound = newSound;
                    newSound.playWhilePaused = true;
                }
            }
            EditorGUILayout.EndHorizontal();

            GUILayout.Label("Scene cutscenes", EditorStyles.boldLabel);
            EditorGUILayout.BeginHorizontal();
            KickStarter.sceneSettings.cutsceneOnStart = (Cutscene)EditorGUILayout.ObjectField("On start:", KickStarter.sceneSettings.cutsceneOnStart, typeof(Cutscene), true);
            if (KickStarter.sceneSettings.cutsceneOnStart == null)
            {
                if (GUILayout.Button("Create", GUILayout.MaxWidth(60f)))
                {
                    Cutscene newCutscene = AddPrefab("Logic", "Cutscene", true, false, true).GetComponent <Cutscene>();
                    newCutscene.gameObject.name = "OnStart";
                    KickStarter.sceneSettings.cutsceneOnStart = newCutscene;
                }
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.BeginHorizontal();
            KickStarter.sceneSettings.cutsceneOnLoad = (Cutscene)EditorGUILayout.ObjectField("On load:", KickStarter.sceneSettings.cutsceneOnLoad, typeof(Cutscene), true);
            if (KickStarter.sceneSettings.cutsceneOnLoad == null)
            {
                if (GUILayout.Button("Create", GUILayout.MaxWidth(60f)))
                {
                    Cutscene newCutscene = AddPrefab("Logic", "Cutscene", true, false, true).GetComponent <Cutscene>();
                    newCutscene.gameObject.name = "OnLoad";
                    KickStarter.sceneSettings.cutsceneOnLoad = newCutscene;
                }
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.BeginHorizontal();
            KickStarter.sceneSettings.cutsceneOnVarChange = (Cutscene)EditorGUILayout.ObjectField("On variable change:", KickStarter.sceneSettings.cutsceneOnVarChange, typeof(Cutscene), true);
            if (KickStarter.sceneSettings.cutsceneOnVarChange == null)
            {
                if (GUILayout.Button("Create", GUILayout.MaxWidth(60f)))
                {
                    Cutscene newCutscene = AddPrefab("Logic", "Cutscene", true, false, true).GetComponent <Cutscene>();
                    newCutscene.gameObject.name = "OnVarChange";
                    KickStarter.sceneSettings.cutsceneOnVarChange = newCutscene;
                }
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Space();

            GUILayout.Label("Visibility", EditorStyles.boldLabel);

            GUILayout.BeginHorizontal();
            GUILayout.Label("Triggers", buttonWidth);
            if (GUILayout.Button("On", EditorStyles.miniButtonLeft))
            {
                SetTriggerVisibility(true);
            }
            if (GUILayout.Button("Off", EditorStyles.miniButtonRight))
            {
                SetTriggerVisibility(false);
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Collision", buttonWidth);
            if (GUILayout.Button("On", EditorStyles.miniButtonLeft))
            {
                SetCollisionVisiblity(true);
            }
            if (GUILayout.Button("Off", EditorStyles.miniButtonRight))
            {
                SetCollisionVisiblity(false);
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Hotspots", buttonWidth);
            if (GUILayout.Button("On", EditorStyles.miniButtonLeft))
            {
                SetHotspotVisibility(true);
            }
            if (GUILayout.Button("Off", EditorStyles.miniButtonRight))
            {
                SetHotspotVisibility(false);
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("NavMesh", buttonWidth);
            if (GUILayout.Button("On", EditorStyles.miniButtonLeft))
            {
                KickStarter.navigationManager.navigationEngine.SetVisibility(true);
            }
            if (GUILayout.Button("Off", EditorStyles.miniButtonRight))
            {
                KickStarter.navigationManager.navigationEngine.SetVisibility(false);
            }
            GUILayout.EndHorizontal();

            ListPrefabs();

            if (GUI.changed)
            {
                EditorUtility.SetDirty(KickStarter.sceneSettings);
                EditorUtility.SetDirty(KickStarter.playerMovement);
                if (KickStarter.sceneSettings.defaultPlayerStart)
                {
                    EditorUtility.SetDirty(KickStarter.sceneSettings.defaultPlayerStart);
                }
            }
        }