private static void ShowAutoConstructButton(BezierSpline[] splines, string label, SplineAutoConstructMode mode) { GUILayout.BeginHorizontal(); if (GUILayout.Button(label)) { for (int i = 0; i < splines.Length; i++) { BezierSpline spline = splines[i]; Undo.RecordObject(spline, label); try { spline.Internal_AutoConstructMode = mode; spline.Internal_SetDirtyImmediatelyWithUndo(label); } finally { spline.Internal_AutoConstructMode = SplineAutoConstructMode.None; } } SceneView.RepaintAll(); } EditorGUI.BeginChangeCheck(); bool autoConstructEnabled = GUILayout.Toggle(Array.Find(splines, (s) => s.Internal_AutoConstructMode == mode), AUTO_CONSTRUCT_ALWAYS_TEXT, GUI.skin.button, EditorGUIUtility.wideMode ? GL_WIDTH_100 : GL_WIDTH_60); if (EditorGUI.EndChangeCheck()) { for (int i = 0; i < splines.Length; i++) { BezierSpline spline = splines[i]; Undo.RecordObject(spline, "Change Autoconstruct Mode"); if (autoConstructEnabled) { spline.Internal_AutoConstructMode = mode; spline.Internal_SetDirtyImmediatelyWithUndo("Change Autoconstruct Mode"); } else { spline.Internal_AutoConstructMode = SplineAutoConstructMode.None; } } SceneView.RepaintAll(); } GUILayout.EndHorizontal(); }
private static void ShowAutoConstructButton(BezierSpline[] splines, string label, SplineAutoConstructMode mode) { GUILayout.BeginHorizontal(); if (GUILayout.Button(label)) { for (int i = 0; i < splines.Length; i++) { BezierSpline spline = splines[i]; Undo.RecordObject(spline, label); for (int j = 0; j < spline.Count; j++) { Undo.RecordObject(spline[j], label); } switch (mode) { case SplineAutoConstructMode.Linear: spline.ConstructLinearPath(); break; case SplineAutoConstructMode.Smooth1: spline.AutoConstructSpline(); break; case SplineAutoConstructMode.Smooth2: spline.AutoConstructSpline2(); break; } spline.Internal_AutoConstructMode = SplineAutoConstructMode.None; } SceneView.RepaintAll(); } bool autoConstructEnabled = false; for (int i = 0; i < splines.Length; i++) { if (splines[i].Internal_AutoConstructMode == mode) { autoConstructEnabled = true; break; } } EditorGUI.BeginChangeCheck(); autoConstructEnabled = GUILayout.Toggle(autoConstructEnabled, AUTO_CONSTRUCT_ALWAYS_TEXT, GUI.skin.button, GUILayout.Width(100f)); if (EditorGUI.EndChangeCheck()) { for (int i = 0; i < splines.Length; i++) { BezierSpline spline = splines[i]; Undo.RecordObject(spline, "Change Autoconstruct Mode"); for (int j = 0; j < spline.Count; j++) { Undo.RecordObject(spline[j], "Change Autoconstruct Mode"); } if (autoConstructEnabled) { spline.Internal_AutoConstructMode = mode; switch (mode) { case SplineAutoConstructMode.Linear: spline.ConstructLinearPath(); break; case SplineAutoConstructMode.Smooth1: spline.AutoConstructSpline(); break; case SplineAutoConstructMode.Smooth2: spline.AutoConstructSpline2(); break; } } else { spline.Internal_AutoConstructMode = SplineAutoConstructMode.None; } } SceneView.RepaintAll(); } GUILayout.EndHorizontal(); }