123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /*************************************************************************
- * Copyright © 2017-2018 Mogoson. All rights reserved.
- *------------------------------------------------------------------------
- * File : MouseTranslateEditor.cs
- * Description : Custom editor for MouseTranslate.
- *------------------------------------------------------------------------
- * Author : Mogoson
- * Version : 0.1.0
- * Date : 4/9/2018
- * Description : Initial development version.
- *
- * Author : Mogoson
- * Version : 0.1.1
- * Date : 6/27/2018
- * Description : Optimize display of node.
- *************************************************************************/
- using Mogoson.UEditor;
- using UnityEditor;
- using UnityEngine;
- namespace AIPagedLod
- {
- [CustomEditor(typeof(MouseTranslate), true)]
- [CanEditMultipleObjects]
- public class MouseTranslateEditor : GenericEditor
- {
- #region Field and Property
- protected MouseTranslate Target { get { return target as MouseTranslate; } }
- protected Vector3 offset;
- #endregion
- #region Protected Method
- protected virtual void OnEnable()
- {
- if (Target.areaSettings.center == null)
- {
- return;
- }
- offset = Target.transform.position - Target.areaSettings.center.position;
- }
- protected virtual void OnSceneGUI()
- {
- if (Target.areaSettings.center == null)
- {
- return;
- }
- if (!Application.isPlaying)
- {
- Target.transform.position = Target.areaSettings.center.position + offset;
- }
- DrawSceneGizmos();
- if (Target.targetCamera == null)
- {
- return;
- }
- DrawSphereArrow(Target.transform.position, Target.targetCamera.position, NodeSize);
- DrawSceneGUI();
- }
- protected void DrawSceneGizmos()
- {
- DrawPositionHandle(Target.areaSettings.center);
- var widthOffset = Vector3.right * Target.areaSettings.width;
- var lengthOffset = Vector3.forward * Target.areaSettings.length;
- var verts = new Vector3[]
- {
- Target.areaSettings.center.position + widthOffset + lengthOffset,
- Target.areaSettings.center.position - widthOffset + lengthOffset,
- Target.areaSettings.center.position - widthOffset - lengthOffset,
- Target.areaSettings.center.position + widthOffset - lengthOffset
- };
- Handles.color = Blue;
- Handles.DrawSolidRectangleWithOutline(verts, TransparentBlue, Blue);
- Handles.DrawLine(new Vector3(verts[0].x, verts[0].y, Target.transform.position.z), new Vector3(verts[1].x, verts[1].y, Target.transform.position.z));
- Handles.DrawLine(new Vector3(Target.transform.position.x, verts[0].y, verts[0].z), new Vector3(Target.transform.position.x, verts[3].y, verts[3].z));
- Handles.Label(Target.areaSettings.center.position, "Center");
- DrawAdaptiveSphereCap(Target.areaSettings.center.position, Quaternion.identity, NodeSize);
- DrawAdaptiveSphereCap(Target.transform.position, Quaternion.identity, NodeSize);
- var project = new Vector3(Target.transform.position.x, Target.areaSettings.center.position.y, Target.transform.position.z);
- DrawSphereArrow(Target.transform.position, project, NodeSize);
- }
- public override void OnInspectorGUI()
- {
- base.OnInspectorGUI();
- Vector3 offsetValue = EditorGUILayout.Vector3Field("偏移值:",offset);
- if(offsetValue != offset)
- {
- offset = offsetValue;
- if (!Application.isPlaying)
- {
- Target.transform.position = Target.areaSettings.center.position + offset;
- MarkSceneDirty();
- }
- }
- }
- protected void DrawSceneGUI()
- {
- return;
- var rect = new Rect(10, Screen.height - 90, 225, 40);
- GUI.color = Color.white;
- Handles.BeginGUI();
- GUILayout.BeginArea(rect, "Current Offset", "Window");
- if (Application.isPlaying)
- {
- EditorGUILayout.Vector3Field(string.Empty, Target.CurrentOffset);
- }
- else
- {
- EditorGUI.BeginChangeCheck();
- offset = EditorGUILayout.Vector3Field(string.Empty, offset);
- if (EditorGUI.EndChangeCheck())
- {
- MarkSceneDirty();
- }
- }
- GUILayout.EndArea();
- Handles.EndGUI();
- }
- #endregion
- }
- }
|