示例#1
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;
            }
        }
示例#2
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);
        }
示例#3
0
        public void SetInitialPosition(PlayerData playerData)
        {
            TeleportPlayerStartMethod teleportPlayerStartMethod = (useSceneDefaultPlayerStart) ? TeleportPlayerStartMethod.SceneDefault : TeleportPlayerStartMethod.EnteredHere;

            playerData.UpdatePosition(StartingSceneIndex, teleportPlayerStartMethod, startingPlayerStartID);
        }
        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();
        }