Newer
Older
fall / FallUnity / Assets / Editor / XboxCtrlrInput / InputManagerReplacer.cs
using UnityEngine;
using UnityEditor;
using UnityEditorInternal;

using System;
using System.IO;
using System.Collections;

namespace XboxCtrlrInput.Editor {
	static class InputManagerReplacer {
		[MenuItem("Window/XboxCtrlrInput/Replace InputManager.asset...")]
		static void ReplaceInputManagerAsset() {

			if (!EditorUtility.DisplayDialog("XboxCtrlrInput",
					"This will replace ProjectSettings/InputManager.asset (a backup file will be created)", "Continue", "Cancel")) {
				return;
			}

			DirectoryInfo assetsDirectory = new DirectoryInfo("Assets");
			if (!assetsDirectory.Exists) {
				Debug.LogError("Can't resolve 'Assets' directory");
				return;
			}

			string projectSettingsPath = Path.Combine(assetsDirectory.Parent.FullName, "ProjectSettings");
			if (!Directory.Exists(projectSettingsPath)) {
				Debug.LogError("Can't resolve 'ProjectSettings' directory");
				return;
			}

			string settingsFilename = EditorSettings.serializationMode == SerializationMode.ForceText ? 
				"InputManagerText": "InputManagerBinary";
			string settingsFile = Path.Combine("Assets/Editor/XboxCtrlrInput/InputManager Copies", settingsFilename);

			if (!File.Exists(settingsFile)) {
				Debug.LogError("Can't resolve '" + settingsFile + "' file");
				return;
			}

			string originalSettingsFile = Path.Combine(projectSettingsPath, "InputManager.asset");
			string backupSettingsFile = originalSettingsFile + ".bak";
			File.Copy(originalSettingsFile, backupSettingsFile);

			File.Copy(settingsFile, originalSettingsFile, true);
			Debug.Log("Backup file: " + backupSettingsFile);
		}
	}
}