8 [CustomEditor(typeof(CUIBezierCurve))]
9 [CanEditMultipleObjects]
14 DrawDefaultInspector();
25 Transform handleTransform = script.transform;
26 Quaternion handleRotation = script.transform.rotation;
30 EditorGUI.BeginChangeCheck();
31 Vector3 newPt = Handles.DoPositionHandle(handleTransform.TransformPoint(controlPoints[p]), handleRotation);
32 if (EditorGUI.EndChangeCheck())
35 Undo.RecordObject(script,
"Move Point");
36 EditorUtility.SetDirty(script);
37 controlPoints[p] = handleTransform.InverseTransformPoint(newPt);
42 Handles.color =
Color.gray;
43 Handles.DrawLine(handleTransform.TransformPoint(controlPoints[0]), handleTransform.TransformPoint(controlPoints[1]));
44 Handles.DrawLine(handleTransform.TransformPoint(controlPoints[1]), handleTransform.TransformPoint(controlPoints[2]));
45 Handles.DrawLine(handleTransform.TransformPoint(controlPoints[2]), handleTransform.TransformPoint(controlPoints[3]));
49 Handles.color =
Color.white;
50 for (
int s = 0; s < sampleSize; s++)
52 Handles.DrawLine(handleTransform.TransformPoint(script.
GetPoint((
float)s / sampleSize)), handleTransform.TransformPoint(script.
GetPoint((
float)(s + 1) / sampleSize)));
55 script.EDITOR_ControlPoints = controlPoints;
override void OnInspectorGUI()
Assume to be a cubic bezier curve at the moment.
static readonly int CubicBezierCurvePtNum
Vector3 GetPoint(float _time)
call this to get a sample
Credit Erdener Gonenc - @PixelEnvision.