mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-13 11:37:40 +02:00
Editor stuff
This commit is contained in:
@ -0,0 +1,59 @@
|
||||
/// Credit Titinious (https://github.com/Titinious)
|
||||
/// Sourced from - https://github.com/Titinious/CurlyUI
|
||||
|
||||
using UnityEditor;
|
||||
|
||||
namespace UnityEngine.UI.Extensions
|
||||
{
|
||||
[CustomEditor(typeof(CUIBezierCurve))]
|
||||
[CanEditMultipleObjects]
|
||||
public class CUIBezierCurveEditor : Editor
|
||||
{
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
DrawDefaultInspector();
|
||||
}
|
||||
|
||||
protected void OnSceneGUI()
|
||||
{
|
||||
CUIBezierCurve script = (CUIBezierCurve)this.target;
|
||||
|
||||
if (script.ControlPoints != null)
|
||||
{
|
||||
Vector3[] controlPoints = script.ControlPoints;
|
||||
|
||||
Transform handleTransform = script.transform;
|
||||
Quaternion handleRotation = script.transform.rotation;
|
||||
|
||||
for (int p = 0; p < CUIBezierCurve.CubicBezierCurvePtNum; p++)
|
||||
{
|
||||
EditorGUI.BeginChangeCheck();
|
||||
Vector3 newPt = Handles.DoPositionHandle(handleTransform.TransformPoint(controlPoints[p]), handleRotation);
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
|
||||
Undo.RecordObject(script, "Move Point");
|
||||
EditorUtility.SetDirty(script);
|
||||
controlPoints[p] = handleTransform.InverseTransformPoint(newPt);
|
||||
script.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
Handles.color = Color.gray;
|
||||
Handles.DrawLine(handleTransform.TransformPoint(controlPoints[0]), handleTransform.TransformPoint(controlPoints[1]));
|
||||
Handles.DrawLine(handleTransform.TransformPoint(controlPoints[1]), handleTransform.TransformPoint(controlPoints[2]));
|
||||
Handles.DrawLine(handleTransform.TransformPoint(controlPoints[2]), handleTransform.TransformPoint(controlPoints[3]));
|
||||
|
||||
int sampleSize = 10;
|
||||
|
||||
Handles.color = Color.white;
|
||||
for (int s = 0; s < sampleSize; s++)
|
||||
{
|
||||
Handles.DrawLine(handleTransform.TransformPoint(script.GetPoint((float)s / sampleSize)), handleTransform.TransformPoint(script.GetPoint((float)(s + 1) / sampleSize)));
|
||||
}
|
||||
|
||||
script.EDITOR_ControlPoints = controlPoints;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user