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);
    }