Пример #1
0
        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();
        }
Пример #2
0
        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();
        }