204 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			204 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using UnityEngine; | |||
|  | using UnityEditor; | |||
|  | using UnityEditorInternal; | |||
|  | using System.Collections; | |||
|  | using System.IO; | |||
|  | using System.Text.RegularExpressions; | |||
|  | using System; | |||
|  | 
 | |||
|  | [InitializeOnLoad] | |||
|  | public class EasyTouchWelcomeScreen : EditorWindow { | |||
|  | 
 | |||
|  | 	private const string VERSION = "5.0.0"; | |||
|  | 	private const string PLAYMAKERADDONVERSION = "1.0,0"; | |||
|  | 	private const string SUPPORTURL = "http://www.thehedgehogteam.com/Forum/"; | |||
|  | 	private const string OFFICIALTOPIC = "http://forum.unity3d.com/threads/released-easy-touch.135192/"; | |||
|  | 	private const float width = 500; | |||
|  | 	private const float height = 440; | |||
|  | 
 | |||
|  | 	private const string PREFSHOWATSTARTUP = "EasyTouch.ShowWelcomeScreen"; | |||
|  | 
 | |||
|  | 	private static bool showAtStartup; | |||
|  | 	private static GUIStyle imgHeader; | |||
|  | 	private static bool interfaceInitialized; | |||
|  | 	private static Texture supportIcon; | |||
|  | 	private static Texture cIcon; | |||
|  | 	private static Texture jsIcon; | |||
|  | 	private static Texture playmakerIcon; | |||
|  | 	private static Texture topicIcon; | |||
|  | 
 | |||
|  | 
 | |||
|  | 	[MenuItem("Tools/Easy Touch/Welcome Screen", false, 0)] | |||
|  | 	[MenuItem("Window/Easy Touch/Welcome Screen", false, 0)] | |||
|  | 	public static void OpenWelcomeWindow(){ | |||
|  | 		GetWindow<EasyTouchWelcomeScreen>(true); | |||
|  | 	} | |||
|  | 
 | |||
|  | 	[MenuItem ("Tools/Easy Touch/Folder Structure/Switch to JS", false, 100)] | |||
|  | 	public static void JsFolders(){ | |||
|  | 		// EasyTouch is here | |||
|  | 		if (!Directory.Exists(Application.dataPath + "/EasyTouchBundle/EasyTouch/Plugins/")){ | |||
|  | 			Debug.LogWarning("Folder structure incompatible, did you already switch to JS folder structure, or have you manually changed the folder structure?"); | |||
|  | 			return; | |||
|  | 		} | |||
|  | 		 | |||
|  | 		// Create Structure | |||
|  | 		if (!Directory.Exists(Application.dataPath + "/Plugins/")) | |||
|  | 			AssetDatabase.CreateFolder("Assets", "Plugins"); | |||
|  | 		if (!Directory.Exists(Application.dataPath + "/Plugins/EasyTouch")) | |||
|  | 			AssetDatabase.CreateFolder("Assets/Plugins", "EasyTouch"); | |||
|  | 		 | |||
|  | 		AssetDatabase.MoveAsset("Assets/EasyTouchBundle/EasyTouch/Plugins/Components","Assets/Plugins/EasyTouch/Components"); | |||
|  | 		AssetDatabase.MoveAsset("Assets/EasyTouchBundle/EasyTouch/Plugins/Engine","Assets/Plugins/EasyTouch/Engine"); | |||
|  | 		 | |||
|  | 		// Refresh database | |||
|  | 		AssetDatabase.Refresh(); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	[MenuItem ("Tools/Easy Touch/Folder Structure/Revert to original", false, 200)] | |||
|  | 	public static void CFolders(){ | |||
|  | 		 | |||
|  | 		if (!Directory.Exists(Application.dataPath + "/Plugins/EasyTouch/")){ | |||
|  | 			Debug.LogWarning("Folder structure incompatible, are you already using original folder structure, or have you manually changed the folder structure?"); | |||
|  | 			return; | |||
|  | 		} | |||
|  | 		 | |||
|  | 		AssetDatabase.MoveAsset("Assets/Plugins/EasyTouch/Components","Assets/EasyTouchBundle/EasyTouch/Plugins/Components"); | |||
|  | 		AssetDatabase.MoveAsset("Assets/Plugins/EasyTouch/Engine","Assets/EasyTouchBundle/EasyTouch/Plugins/Engine"); | |||
|  | 		 | |||
|  | 		AssetDatabase.DeleteAsset("Assets/Plugins/EasyTouch"); | |||
|  | 		 | |||
|  | 		Debug.Log("Project must be reloaded when reverting folder structure."); | |||
|  | 		EditorApplication.OpenProject(Application.dataPath.Remove(Application.dataPath.Length - "Assets".Length, "Assets".Length)); | |||
|  | 	} | |||
|  | 
 | |||
|  | 	static EasyTouchWelcomeScreen(){ | |||
|  | 		EditorApplication.playmodeStateChanged -= OnPlayModeChanged; | |||
|  | 		EditorApplication.playmodeStateChanged += OnPlayModeChanged; | |||
|  | 		 | |||
|  | 		showAtStartup = EditorPrefs.GetBool(PREFSHOWATSTARTUP, true); | |||
|  | 		 | |||
|  | 		if (showAtStartup){ | |||
|  | 			EditorApplication.update -= OpenAtStartup; | |||
|  | 			EditorApplication.update += OpenAtStartup; | |||
|  | 		} | |||
|  | 	} | |||
|  | 
 | |||
|  | 	static void OpenAtStartup(){ | |||
|  | 		OpenWelcomeWindow(); | |||
|  | 		EditorApplication.update -= OpenAtStartup; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	static void OnPlayModeChanged(){ | |||
|  | 		EditorApplication.update -= OpenAtStartup; | |||
|  | 		EditorApplication.playmodeStateChanged -= OnPlayModeChanged; | |||
|  | 	} | |||
|  | 	 | |||
|  | 	void OnEnable(){ | |||
|  | 		titleContent = new GUIContent("Welcome To Easy Touch");  | |||
|  | 
 | |||
|  | 		maxSize = new Vector2(width, height); | |||
|  | 		minSize = maxSize; | |||
|  | 	}	 | |||
|  | 
 | |||
|  | 	public void OnGUI(){ | |||
|  | 
 | |||
|  | 		InitInterface(); | |||
|  | 		GUI.Box(new Rect(0, 0, width, 60), "", imgHeader); | |||
|  | 		GUI.Label( new Rect(width-90,45,200,20),new GUIContent("Version : " +VERSION)); | |||
|  | 		GUILayoutUtility.GetRect(position.width, 64); | |||
|  | 
 | |||
|  | 		GUILayout.BeginVertical(); | |||
|  | 
 | |||
|  | 		if (Button(playmakerIcon,"Install PlayMaker add-on","Requires PlayMaker 1.8 or higher.")){ | |||
|  | 			InstallPlayMakerAddOn(); | |||
|  | 		} | |||
|  | 
 | |||
|  | 		if (Button(jsIcon,"Switch to JS","Switch Easy Touch folder structure to be used with Java Script.")){ | |||
|  | 			JsFolders(); | |||
|  | 		} | |||
|  | 
 | |||
|  | 		if (Button(cIcon,"Revert to original","Revert Easy Touch folder structure to original (C#).")){ | |||
|  | 			CFolders(); | |||
|  | 		} | |||
|  | 
 | |||
|  | 		if (Button(supportIcon,"Community Forum","You need your invoice number to register, if you are a new user.")){ | |||
|  | 			Application.OpenURL(SUPPORTURL); | |||
|  | 		} | |||
|  | 
 | |||
|  | 		if (Button(supportIcon,"Official topic","Official topic on Unity Forum.",3)){ | |||
|  | 			Application.OpenURL(OFFICIALTOPIC); | |||
|  | 		} | |||
|  | 
 | |||
|  | 		bool show = GUILayout.Toggle(showAtStartup, "Show at startup"); | |||
|  | 		if (show != showAtStartup){ | |||
|  | 			showAtStartup = show; | |||
|  | 			EditorPrefs.SetBool(PREFSHOWATSTARTUP, showAtStartup); | |||
|  | 		} | |||
|  | 
 | |||
|  | 		GUILayout.EndVertical(); | |||
|  | 
 | |||
|  | 	} | |||
|  | 
 | |||
|  | 	void InitInterface(){ | |||
|  | 
 | |||
|  | 		if (!interfaceInitialized){ | |||
|  | 			imgHeader = new GUIStyle(); | |||
|  | 			imgHeader.normal.background = (Texture2D)Resources.Load("EasyTouchWelcome"); | |||
|  | 			imgHeader.normal.textColor = Color.white; | |||
|  | 
 | |||
|  | 			supportIcon = (Texture)Resources.Load("btn_Support") as Texture; | |||
|  | 			playmakerIcon = (Texture)Resources.Load("btn_PlayMaker") as Texture; | |||
|  | 			cIcon = (Texture)Resources.Load("btn_cs") as Texture; | |||
|  | 			jsIcon = (Texture)Resources.Load("btn_js") as Texture; | |||
|  | 
 | |||
|  | 			interfaceInitialized = true; | |||
|  | 		} | |||
|  | 	} | |||
|  | 	 | |||
|  | 	bool Button(Texture texture, string heading, string body, int space=10){ | |||
|  | 
 | |||
|  | 		GUILayout.BeginHorizontal(); | |||
|  | 		 | |||
|  | 		GUILayout.Space(54); | |||
|  | 		GUILayout.Box(texture, GUIStyle.none, GUILayout.MaxWidth(48)); | |||
|  | 		GUILayout.Space(10); | |||
|  | 		 | |||
|  | 		GUILayout.BeginVertical(); | |||
|  | 		GUILayout.Space(1); | |||
|  | 		GUILayout.Label(heading, EditorStyles.boldLabel); | |||
|  | 		GUILayout.Label(body); | |||
|  | 		GUILayout.EndVertical(); | |||
|  | 		 | |||
|  | 		GUILayout.EndHorizontal(); | |||
|  | 		 | |||
|  | 		var rect = GUILayoutUtility.GetLastRect(); | |||
|  | 		EditorGUIUtility.AddCursorRect(rect, MouseCursor.Link); | |||
|  | 			 | |||
|  | 		bool returnValue = false; | |||
|  | 		if (Event.current.type == EventType.MouseDown && rect.Contains(Event.current.mousePosition)){ | |||
|  | 			returnValue = true; | |||
|  | 		} | |||
|  | 		 | |||
|  | 		GUILayout.Space(space); | |||
|  | 
 | |||
|  | 		return returnValue; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	private void InstallPlayMakerAddOn(){ | |||
|  | 			 | |||
|  | 		string package = "Assets/EasyTouchBundle/Install/PlayMakerAddOn.unitypackage"; | |||
|  | 		 | |||
|  | 		try | |||
|  | 		{ | |||
|  | 			AssetDatabase.ImportPackage(package, true); | |||
|  | 		} | |||
|  | 		catch (Exception) | |||
|  | 		{ | |||
|  | 			Debug.LogError("Failed to import package: " + package); | |||
|  | 			throw; | |||
|  | 		} | |||
|  | 
 | |||
|  | 	} | |||
|  | } |