mirror of
https://github.com/RHeavenStudioPlus/HeavenStudioPlus.git
synced 2024-12-18 06:20:03 +00:00
59 lines
No EOL
2.3 KiB
C#
59 lines
No EOL
2.3 KiB
C#
/// 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;
|
|
}
|
|
}
|
|
}
|
|
} |