/** * <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; } }
/** * <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); }
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(); }