156 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			156 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System.Collections; | |||
|  | using System.Collections.Generic; | |||
|  | using UnityEngine; | |||
|  | using UnityEditor; | |||
|  | using System.IO; | |||
|  | 
 | |||
|  | namespace ES3Editor | |||
|  | { | |||
|  | 	public class ToolsWindow : SubWindow | |||
|  | 	{ | |||
|  | 		public ToolsWindow(EditorWindow window) : base("Tools", window){} | |||
|  | 
 | |||
|  | 		public override void OnGUI() | |||
|  | 		{ | |||
|  | 			var style = EditorStyle.Get; | |||
|  | 
 | |||
|  | 			EditorGUILayout.BeginHorizontal(style.area); | |||
|  | 
 | |||
|  |             if (GUILayout.Button("Open Persistent Data Path")) | |||
|  |                 OpenPersistentDataPath(); | |||
|  | 
 | |||
|  | 			EditorGUILayout.EndHorizontal(); | |||
|  | 
 | |||
|  | 			EditorGUILayout.BeginHorizontal(style.area); | |||
|  | 
 | |||
|  |             if (GUILayout.Button("Clear Persistent Data Path")) | |||
|  |                 ClearPersistentDataPath(); | |||
|  | 
 | |||
|  |             if (GUILayout.Button("Clear PlayerPrefs")) | |||
|  |                 ClearPlayerPrefs(); | |||
|  | 
 | |||
|  | 			EditorGUILayout.EndHorizontal(); | |||
|  | 		} | |||
|  | 
 | |||
|  |         [MenuItem("Tools/Easy Save 3/Open Persistent Data Path", false, 200)] | |||
|  |         private static void OpenPersistentDataPath() | |||
|  |         { | |||
|  |             OSFileBrowser.Open(Application.persistentDataPath); | |||
|  |         } | |||
|  | 
 | |||
|  |         [MenuItem("Tools/Easy Save 3/Clear Persistent Data Path", false, 200)] | |||
|  |         private static void ClearPersistentDataPath() | |||
|  |         { | |||
|  |             if (EditorUtility.DisplayDialog("Clear Persistent Data Path", "Are you sure you wish to clear the persistent data path?\n This action cannot be reversed.", "Clear", "Cancel")) | |||
|  |             { | |||
|  |                 System.IO.DirectoryInfo di = new DirectoryInfo(Application.persistentDataPath); | |||
|  | 
 | |||
|  |                 foreach (FileInfo file in di.GetFiles()) | |||
|  |                     file.Delete(); | |||
|  |                 foreach (DirectoryInfo dir in di.GetDirectories()) | |||
|  |                     dir.Delete(true); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         [MenuItem("Tools/Easy Save 3/Clear PlayerPrefs", false, 200)] | |||
|  |         private static void ClearPlayerPrefs() | |||
|  |         { | |||
|  |             if (EditorUtility.DisplayDialog("Clear PlayerPrefs", "Are you sure you wish to clear PlayerPrefs?\nThis action cannot be reversed.", "Clear", "Cancel")) | |||
|  |                 PlayerPrefs.DeleteAll(); | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  | 	public static class OSFileBrowser | |||
|  | 	{ | |||
|  | 		public static bool IsInMacOS | |||
|  | 		{ | |||
|  | 			get | |||
|  | 			{ | |||
|  | 				return UnityEngine.SystemInfo.operatingSystem.IndexOf("Mac OS") != -1; | |||
|  | 			} | |||
|  | 		} | |||
|  | 
 | |||
|  | 		public static bool IsInWinOS | |||
|  | 		{ | |||
|  | 			get | |||
|  | 			{ | |||
|  | 				return UnityEngine.SystemInfo.operatingSystem.IndexOf("Windows") != -1; | |||
|  | 			} | |||
|  | 		} | |||
|  | 
 | |||
|  | 		public static void OpenInMac(string path) | |||
|  | 		{ | |||
|  | 			bool openInsidesOfFolder = false; | |||
|  | 
 | |||
|  | 			// try mac | |||
|  | 			string macPath = path.Replace("\\", "/"); // mac finder doesn't like backward slashes | |||
|  | 
 | |||
|  | 			if ( System.IO.Directory.Exists(macPath) ) // if path requested is a folder, automatically open insides of that folder | |||
|  | 			{ | |||
|  | 				openInsidesOfFolder = true; | |||
|  | 			} | |||
|  | 
 | |||
|  | 			if ( !macPath.StartsWith("\"") ) | |||
|  | 			{ | |||
|  | 				macPath = "\"" + macPath; | |||
|  | 			} | |||
|  | 
 | |||
|  | 			if ( !macPath.EndsWith("\"") ) | |||
|  | 			{ | |||
|  | 				macPath = macPath + "\""; | |||
|  | 			} | |||
|  | 
 | |||
|  | 			string arguments = (openInsidesOfFolder ? "" : "-R ") + macPath; | |||
|  | 
 | |||
|  | 			try | |||
|  | 			{ | |||
|  | 				System.Diagnostics.Process.Start("open", arguments); | |||
|  | 			} | |||
|  | 			catch ( System.ComponentModel.Win32Exception e ) | |||
|  | 			{ | |||
|  | 				// tried to open mac finder in windows | |||
|  | 				// just silently skip error | |||
|  | 				// we currently have no platform define for the current OS we are in, so we resort to this | |||
|  | 				e.HelpLink = ""; // do anything with this variable to silence warning about not using it | |||
|  | 			} | |||
|  | 		} | |||
|  | 
 | |||
|  | 		public static void OpenInWin(string path) | |||
|  | 		{ | |||
|  | 			bool openInsidesOfFolder = false; | |||
|  | 
 | |||
|  | 			// try windows | |||
|  | 			string winPath = path.Replace("/", "\\"); // windows explorer doesn't like forward slashes | |||
|  | 
 | |||
|  | 			if ( System.IO.Directory.Exists(winPath) ) // if path requested is a folder, automatically open insides of that folder | |||
|  | 				openInsidesOfFolder = true; | |||
|  | 
 | |||
|  | 			try | |||
|  | 			{ | |||
|  |                 System.Diagnostics.Process.Start("explorer.exe", (openInsidesOfFolder ? "/root," : "/select,") + "\"" + winPath + "\""); | |||
|  |             } | |||
|  | 			catch ( System.ComponentModel.Win32Exception e ) | |||
|  | 			{ | |||
|  | 				e.HelpLink = ""; | |||
|  | 			} | |||
|  | 		} | |||
|  | 
 | |||
|  | 		public static void Open(string path) | |||
|  | 		{ | |||
|  | 			if ( IsInWinOS ) | |||
|  | 			{ | |||
|  | 				OpenInWin(path); | |||
|  | 			} | |||
|  | 			else if ( IsInMacOS ) | |||
|  | 			{ | |||
|  | 				OpenInMac(path); | |||
|  | 			} | |||
|  | 			else // couldn't determine OS | |||
|  | 			{ | |||
|  | 				OpenInWin(path); | |||
|  | 				OpenInMac(path); | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | } |