92 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			92 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using UnityEditor; | ||
|  | using UnityEngine; | ||
|  | using System.Collections; | ||
|  | using System.Reflection; | ||
|  | using System; | ||
|  | 
 | ||
|  | using qtools.quv.pview; | ||
|  | 
 | ||
|  | namespace qtools.quv | ||
|  | { | ||
|  | 	public class QUVWindow : EditorWindow | ||
|  | 	{ | ||
|  | 		// STATIC | ||
|  | 		[MenuItem ("Tools/QUVEditor")]	 | ||
|  | 		public static void ShowWindow ()  | ||
|  | 		{  | ||
|  | 			if (Resources.FindObjectsOfTypeAll<QUVWindow> ().Length > 0) | ||
|  | 				return; | ||
|  | 
 | ||
|  | 			QUVWindow window = (QUVWindow)ScriptableObject.CreateInstance<QUVWindow>(); | ||
|  | 
 | ||
|  |             #if UNITY_5_1 || UNITY_5_2 || UNITY_5_3_OR_NEWER | ||
|  |             window.titleContent = new GUIContent("QUVEditor"); | ||
|  |             #else | ||
|  |             window.title = "QUVEditor"; | ||
|  |             #endif | ||
|  | 
 | ||
|  | 			window.minSize = new Vector2(785, 473); | ||
|  |             window.wantsMouseMove = true; | ||
|  | 			window.Show(); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		// PRIVATE | ||
|  | 		private QUVMainView mainView; | ||
|  | 		 | ||
|  | 		// CONSTRUCTOR | ||
|  | 		void init() | ||
|  | 		{			 | ||
|  | 			GUI.FocusControl(null); | ||
|  | 
 | ||
|  | 			mainView = new QUVMainView(this);			 | ||
|  | 
 | ||
|  | 			Undo.undoRedoPerformed -= UndoRedoPerformed;  | ||
|  | 			Undo.undoRedoPerformed += UndoRedoPerformed; | ||
|  | 		} | ||
|  | 		  | ||
|  | 		// DESTRUCTOR | ||
|  | 		public void OnDestroy() | ||
|  | 		{ | ||
|  | 			Undo.undoRedoPerformed -= UndoRedoPerformed;  | ||
|  |             SceneView.onSceneGUIDelegate -= onSceneGUIDelegate; | ||
|  | 
 | ||
|  |             if (mainView != null)  | ||
|  |             { | ||
|  |                 mainView.dispose(); | ||
|  | 			    mainView = null; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  | 		// OVERRIDE | ||
|  | 		void OnFocus()  | ||
|  | 		{ | ||
|  | 			SceneView.onSceneGUIDelegate -= onSceneGUIDelegate; | ||
|  | 			SceneView.onSceneGUIDelegate += onSceneGUIDelegate; | ||
|  | 			OnSelectionChange(); | ||
|  |         } | ||
|  | 
 | ||
|  | 		void onSceneGUIDelegate(SceneView sceneView)  | ||
|  | 		{ | ||
|  |             if (mainView.onSceneGUIDelegate(sceneView)) | ||
|  |                 mainView.Repaint(); | ||
|  |         } | ||
|  | 
 | ||
|  |         void OnGUI()  | ||
|  | 		{ | ||
|  |             if (mainView == null || !mainView.isInited()) init();		 | ||
|  |             mainView.update((int)position.width, (int)position.height); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		void OnSelectionChange()  | ||
|  | 		{ | ||
|  | 			if (mainView == null) init();		 | ||
|  | 			else mainView.selectedGameObjectChanged(); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		public void UndoRedoPerformed() | ||
|  | 		{ | ||
|  | 			if (mainView == null) init(); | ||
|  |             else mainView.undoRedoPerformed();		 | ||
|  | 		} | ||
|  | 	} | ||
|  | } |