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