using UnityEditor; using UnityEngine; using System.Collections; using System.Collections.Generic; using Fungus; [CanEditMultipleObjects] [CustomEditor (typeof(View))] public class ViewEditor : Editor { void OnSceneGUI () { View t = target as View; if (t.enabled) { EditViewBounds(); } if (GUI.changed) { EditorUtility.SetDirty(target); } } void EditViewBounds() { View t = target as View; DrawView(t); Vector3 pos = t.transform.position; float viewSize = t.viewSize; Vector3 newViewPos = Handles.PositionHandle(pos, Quaternion.identity); t.transform.position = newViewPos; Vector3[] handles = new Vector3[2]; handles[0] = pos + new Vector3(0, -viewSize, 0); handles[1] = pos + new Vector3(0, viewSize, 0); for (int i = 0; i < 2; ++i) { Vector3 newPos = Handles.FreeMoveHandle(handles[i], Quaternion.identity, HandleUtility.GetHandleSize(pos) * 0.1f, Vector3.zero, Handles.CubeCap); if (newPos != handles[i]) { t.viewSize = Mathf.Abs(newPos.y - pos.y); break; } } } public static void DrawView(View view) { Vector3 pos = view.transform.position; float viewSize = view.viewSize; // Draw 2:1 aspect ratio box { float height = viewSize; float width = height * (2f / 1f); Vector3[] verts = new Vector3[4]; verts[0] = pos + new Vector3(-width, -height, 0); verts[1] = pos + new Vector3(-width, height, 0); verts[2] = pos + new Vector3(width, height, 0); verts[3] = pos + new Vector3(width, -height, 0); Handles.DrawSolidRectangleWithOutline(verts, new Color(1,1,1,0f), new Color(0,1,0,0.25f) ); } // Draw 4:3 aspect ratio box { float height = viewSize; float width = height * (4f / 3f); Vector3[] verts = new Vector3[4]; verts[0] = pos + new Vector3(-width, -height, 0); verts[1] = pos + new Vector3(-width, height, 0); verts[2] = pos + new Vector3(width, height, 0); verts[3] = pos + new Vector3(width, -height, 0); Handles.DrawSolidRectangleWithOutline(verts, new Color(1,1,1,0f), new Color(0,1,0,1) ); } } }