private void OnSceneGUI() { // save position in local space DashedCurve.CurveType t = (DashedCurve.CurveType)type.enumValueIndex; switch (t) { case DashedCurve.CurveType.Quadratic: start.vector3Value = ShowPoint(start.vector3Value); handle1.vector3Value = ShowPoint(handle1.vector3Value); handle2.vector3Value = handle1.vector3Value; end.vector3Value = ShowPoint(end.vector3Value); break; case DashedCurve.CurveType.Cubic: start.vector3Value = ShowPoint(start.vector3Value); handle1.vector3Value = ShowPoint(handle1.vector3Value); handle2.vector3Value = ShowPoint(handle2.vector3Value); end.vector3Value = ShowPoint(end.vector3Value); break; } serializedObject.ApplyModifiedProperties(); // draw in world space Handles.color = Color.gray; Handles.DrawAAPolyLine(3, transform.TransformPoint(start.vector3Value), transform.TransformPoint(handle1.vector3Value)); Handles.DrawAAPolyLine(3, transform.TransformPoint(end.vector3Value), transform.TransformPoint(handle2.vector3Value)); switch (t) { case DashedCurve.CurveType.Quadratic: HandleExtensions.DrawBezier2(transform.TransformPoint(start.vector3Value), transform.TransformPoint(end.vector3Value), transform.TransformPoint(handle1.vector3Value), Color.cyan, null, 5); break; case DashedCurve.CurveType.Cubic: Handles.DrawBezier( transform.TransformPoint(start.vector3Value), transform.TransformPoint(end.vector3Value), transform.TransformPoint(handle1.vector3Value), transform.TransformPoint(handle2.vector3Value), Color.cyan, null, 5); break; } }
public override void OnInspectorGUI() { GUILayout.Space(10f); GUILayout.Label("Interpolation", EditorStyles.boldLabel); serializedObject.Update(); EditorGUILayout.PropertyField(type); GUILayout.Space(5f); GUILayout.Label("Control points", EditorStyles.boldLabel); DashedCurve.CurveType t = (DashedCurve.CurveType)type.enumValueIndex; switch (t) { case DashedCurve.CurveType.Quadratic: EditorGUILayout.PropertyField(start); EditorGUILayout.PropertyField(handle1); handle2.vector3Value = handle1.vector3Value; EditorGUILayout.PropertyField(end); break; case DashedCurve.CurveType.Cubic: EditorGUILayout.PropertyField(start); EditorGUILayout.PropertyField(handle1); EditorGUILayout.PropertyField(handle2); EditorGUILayout.PropertyField(end); break; } GUILayout.Space(5f); GUILayout.Label("Curve params", EditorStyles.boldLabel); EditorGUILayout.PropertyField(width); EditorGUILayout.PropertyField(subdivisions); if (subdivisions.intValue < 0) { subdivisions.intValue = 0; } EditorGUILayout.PropertyField(stripLenght); EditorGUILayout.PropertyField(emptyStripLenght); serializedObject.ApplyModifiedProperties(); }