private void OnSceneGUI() { Bezier_Intermediate bb = target as Bezier_Intermediate; bb.startPoint = bb.precedingBez.endPoint; Vector3 oldTanDir = bb.precedingBez.endPoint - bb.precedingBez.endTangent; Vector3 oppositeDir = bb.startPoint + oldTanDir * bb.startTangentMagnitude; bb.startTangent = oppositeDir; EditorGUI.BeginChangeCheck(); bb.endPoint = Handles.PositionHandle(bb.endPoint, Quaternion.identity); bb.endTangent = Handles.PositionHandle(bb.endTangent, Quaternion.identity); Handles.DrawBezier(bb.startPoint, bb.endPoint, bb.startTangent, bb.endTangent, Color.red, null, 2f); Handles.color = Color.cyan; Handles.DrawLine(bb.startPoint, bb.startTangent); Handles.DrawLine(bb.endPoint, bb.endTangent); Handles.color = Color.white; if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(bb, "Bezier_Intermediate Handle Undo"); } Handles.SphereHandleCap(0, bb.startTangent, Quaternion.identity, 7f, EventType.Repaint); Handles.SphereHandleCap(0, bb.endTangent, Quaternion.identity, 7f, EventType.Repaint); }
private void OnSceneGUI() { Bezier_Intermediate bb = target as Bezier_Intermediate; bb.startPoint = bb.precedingBez.endPoint; Vector3 oldTanDir = bb.precedingBez.endPoint - bb.precedingBez.endTangent; Vector3 oppositeDir = bb.startPoint + oldTanDir * bb.startTangentMagnitude; bb.startTangent = oppositeDir; bb.endPoint = Handles.PositionHandle(bb.endPoint, Quaternion.identity); bb.endTangent = Handles.PositionHandle(bb.endTangent, Quaternion.identity); Handles.DrawBezier(bb.startPoint, bb.endPoint, bb.startTangent, bb.endTangent, Color.red, null, 2f); Debug.DrawLine(bb.endPoint, bb.endTangent); }