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); } }
/** * <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); } }
/** * <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); }
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); }
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); } }
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); }
/** * <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); }
protected void FindPlayerStart() { PlayerStart playerStart = GetPlayerStart(); if (playerStart != null) { playerStart.SetPlayerStart(); } }
private void UnloadPlayerStart(int playerStartInt, SceneSettings sceneSettings) { PlayerStart playerStart = ConstantID.GetComponent <PlayerStart> (playerStartInt, sceneSettings.gameObject.scene); if (playerStart) { sceneSettings.defaultPlayerStart = playerStart; } }
private void FindPlayerStart() { PlayerStart playerStart = GetPlayerStart(); if (playerStart != null) { playerStart.SetPlayerStart(); } }
private void UnloadPlayerStart(int playerStartInt, SceneSettings sceneSettings) { PlayerStart playerStart = Serializer.returnComponent <PlayerStart> (playerStartInt, sceneSettings.gameObject); if (playerStart && sceneSettings) { sceneSettings.defaultPlayerStart = playerStart; } }
private void UnloadPlayerStart(int playerStartInt) { PlayerStart playerStart = Serializer.returnComponent <PlayerStart> (playerStartInt); if (playerStart && KickStarter.sceneSettings) { KickStarter.sceneSettings.defaultPlayerStart = playerStart; } }
/** * <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."); } }
/** * <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; } }
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); }
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); } } }
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; } }
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); } }
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(); } }
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(); } }
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(); }
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 (); }
/** * <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 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); } } }