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