mergemilitary/Assets/Arts/AA/QUVEditor/Editor/QUVWindow.cs

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