1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- #if UNITY_EDITOR
- using UnityEditor;
- [CustomEditor(typeof(Folding))]
- public class FoldingEditor : Editor
- {
- Folding folding;
- private void OnEnable()
- {
- if (folding == null)
- folding = (Folding)target;
- }
- private void OnSceneGUI()
- {
- if (!folding.showGizmos) return;
- DrawRotationAxisPositionHandle();
- DrawRotationAxis();
- DrawRotationAxisPlaneNormal();
- }
- private void DrawRotationAxisPositionHandle()
- {
- RotationAxis rt = folding.GetRotationAxis();
- EditorGUI.BeginChangeCheck();
- rt.position = Handles.PositionHandle(rt.position, Quaternion.identity);
- if(EditorGUI.EndChangeCheck())
- {
- Undo.RecordObject(folding, "RotationAxis position change.");
- EditorUtility.SetDirty(folding);
- }
- folding.SetRotationAxis(rt);
- }
- private void DrawRotationAxis()
- {
- RotationAxis rotationAxis = folding.GetRotationAxis();
- Vector3[] fourPlanePoints = PlaneUtils.GetFourPlanePoints(rotationAxis.position, rotationAxis.angle);
- Handles.color = Color.blue;
- Handles.DrawLine(fourPlanePoints[0], fourPlanePoints[1]);
- Handles.DrawLine(fourPlanePoints[1], fourPlanePoints[2]);
- Handles.DrawLine(fourPlanePoints[2], fourPlanePoints[3]);
- Handles.DrawLine(fourPlanePoints[3], fourPlanePoints[0]);
- }
- private void DrawRotationAxisPlaneNormal()
- {
- RotationAxis rotationAxis = folding.GetRotationAxis();
- Handles.color = Color.blue;
- Handles.ArrowHandleCap(0, rotationAxis.position, Quaternion.Euler(0, -rotationAxis.angle + 180, 0), 0.5f, EventType.Repaint);
- }
- }
- #endif
|