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