public override void OnInspectorGUI() { base.OnInspectorGUI(); _railroadSwitch = target as RailroadSwitch_v3; if (GUILayout.Button("Switch Rails")) { #if UNITY_EDITOR Undo.RecordObject(_railroadSwitch, "Switch Rails"); #endif _railroadSwitch.SwitchRails(); #if UNITY_EDITOR MarkSceneAlteration(); #endif } }
/// <summary> /// Save turnout prefab /// </summary> private void CreateTurnout() { txtMessage = string.Empty; if (turnoutPrefabName == string.Empty) { ShowMessage("Please, enter a name for the prefab before proceding", WSMGameStudio.Splines.MessageType.Error); return; } GameObject[] selectedGameObjects = Selection.gameObjects; if (selectedGameObjects == null) { ShowMessage("No rails selected", WSMGameStudio.Splines.MessageType.Error); return; } if (selectedGameObjects.Length < 2) { ShowMessage("Select at least 2 rails segments", WSMGameStudio.Splines.MessageType.Error); return; } int tournoutsCount = 0; foreach (GameObject obj in selectedGameObjects) { if (obj.tag == "TurnoutRails") { tournoutsCount++; } } if (tournoutsCount != 1) { ShowMessage("Exactly 1 rail segments must be tagged as TurnoutRails", WSMGameStudio.Splines.MessageType.Error); return; } DirectoryInfo info = new DirectoryInfo(Application.dataPath); string folderPath = Path.Combine(info.Name, outputDirectory); string prefabFilePath = Path.Combine(folderPath, turnoutPrefabName + "_prefab.prefab"); //Check folder existence if (!Directory.Exists(folderPath)) { ShowMessage(string.Format("Folder does not exist: {0}", folderPath), WSMGameStudio.Splines.MessageType.Error); return; } //Overwrite dialog if (Exists(prefabFilePath)) { if (!ShowOverwriteDialog(turnoutPrefabName)) { return; } } /* * Check rails Main and Turnout * Create object * Set children * Delete object */ GameObject sceneObject = new GameObject(turnoutPrefabName); RailroadSwitch_v3 railroadSwitchScript = sceneObject.AddComponent <RailroadSwitch_v3>(); railroadSwitchScript._railsColliders = new List <GameObject>(); foreach (GameObject obj in selectedGameObjects) { foreach (Transform child in obj.transform) { if (child.name == "GuideCollider") { railroadSwitchScript._railsColliders.Add(child.gameObject); if (obj.tag == "TurnoutRails") { child.gameObject.SetActive(false); } } } obj.transform.SetParent(sceneObject.transform); } //Save prefab as .prefab file GameObject prefab = SavePrefabFile(sceneObject, prefabFilePath, true); //Intantiate prefab Instantiate(prefab); ShowMessage(string.Format("{0} Created Succesfuly!", turnoutPrefabName), WSMGameStudio.Splines.MessageType.Success); }