void SwapCurves(MegaCurveSculptLayered mod, int t1, int t2)
 {
     if (t1 >= 0 && t1 < mod.curves.Count && t2 >= 0 && t2 < mod.curves.Count && t1 != t2)
     {
         MegaSculptCurve mt1 = mod.curves[t1];
         mod.curves.RemoveAt(t1);
         mod.curves.Insert(t2, mt1);
         EditorUtility.SetDirty(target);
     }
 }
    public override bool Inspector()
    {
        MegaCurveSculptLayered mod = (MegaCurveSculptLayered)target;

#if !UNITY_5 && !UNITY_2017 && !UNITY_2018 && !UNITY_2019 && !UNITY_2020
        EditorGUIUtility.LookLikeControls();
#endif

        if (GUILayout.Button("Add Curve"))
        {
            mod.curves.Add(MegaSculptCurve.Create());
        }

        for (int i = 0; i < mod.curves.Count; i++)
        {
            CurveGUI(mod.curves[i]);

            EditorGUILayout.BeginHorizontal();

            if (GUILayout.Button("Up"))
            {
                if (i > 0)
                {
                    SwapCurves(mod, i, i - 1);
                }
            }

            if (GUILayout.Button("Down"))
            {
                if (i < mod.curves.Count - 1)
                {
                    SwapCurves(mod, i, i + 1);
                }
            }

            if (GUILayout.Button("Delete"))
            {
                mod.curves.RemoveAt(i);
                i--;
            }
            EditorGUILayout.EndHorizontal();
        }

        return(false);
    }
    public override void DrawSceneGUI()
    {
        MegaCurveSculptLayered mod = (MegaCurveSculptLayered)target;

        for (int i = 0; i < mod.curves.Count; i++)
        {
            if (mod.curves[i].enabled && mod.curves[i].uselimits)
            {
                Vector3 pos    = mod.transform.TransformPoint(mod.curves[i].origin);
                Vector3 newpos = Handles.PositionHandle(pos, Quaternion.identity);

                if (newpos != pos)
                {
                    mod.curves[i].origin = mod.transform.worldToLocalMatrix.MultiplyPoint(newpos);
                    EditorUtility.SetDirty(target);
                }
            }
        }
    }
 void SwapCurves(MegaCurveSculptLayered mod, int t1, int t2)
 {
     if ( t1 >= 0 && t1 < mod.curves.Count && t2 >= 0 && t2 < mod.curves.Count && t1 != t2 )
     {
         MegaSculptCurve mt1 = mod.curves[t1];
         mod.curves.RemoveAt(t1);
         mod.curves.Insert(t2, mt1);
         EditorUtility.SetDirty(target);
     }
 }