void CurveGUI(SplinePolyLine curve) { GUILayout.BeginHorizontal(); CurvySplineBase o = curve.Spline; curve.Spline = (CurvySplineBase)EditorGUILayout.ObjectField(curve.Spline, typeof(CurvySplineBase), true, GUILayout.Width(140)); if (o != curve.Spline) { UnhookSpline(o); } HookSpline(curve.Spline); curve.VertexMode = (SplinePolyLine.VertexCalculation)EditorGUILayout.EnumPopup(curve.VertexMode, GUILayout.Width(140)); GUILayout.Space(20); curve.Orientation = (ContourOrientation)EditorGUILayout.EnumPopup(curve.Orientation); if (GUILayout.Button(new GUIContent(CurvyStyles.DeleteSmallTexture, "Remove"), GUILayout.ExpandWidth(false))) { if (curve.Spline) { UnhookSpline(curve.Spline); } Curves.Remove(curve); refreshNow = true; GUIUtility.ExitGUI(); } switch (curve.VertexMode) { case SplinePolyLine.VertexCalculation.ByAngle: GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Space(150); float lw = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 40; curve.Angle = Mathf.Max(0, EditorGUILayout.FloatField("Angle", curve.Angle, GUILayout.Width(140))); EditorGUIUtility.labelWidth = 60; GUILayout.Space(20); curve.Distance = EditorGUILayout.FloatField("Min. Dist.", curve.Distance, GUILayout.Width(150)); EditorGUIUtility.labelWidth = lw; if (curve.Angle == 0) { GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Space(140); EditorGUILayout.HelpBox("Angle must be >0", MessageType.Error); } break; } GUILayout.EndHorizontal(); }
void CurveGUI(SplinePolyLine curve, bool canRemove) { GUILayout.BeginVertical(GUI.skin.box); GUILayout.BeginHorizontal(); CurvySplineBase o = curve.Spline; curve.Spline = (CurvySplineBase)EditorGUILayout.ObjectField(new GUIContent("Spline", "Note: Curves from a SplineGroup needs to be connected!"), curve.Spline, typeof(CurvySplineBase), true); if (o != curve.Spline) { UnhookSpline(o); } HookSpline(curve.Spline); if (canRemove) { if (GUILayout.Button(new GUIContent(mTexDelete, "Remove"), GUILayout.ExpandWidth(false))) { if (curve.Spline) { UnhookSpline(curve.Spline); } Curves.Remove(curve); refreshNow = true; GUIUtility.ExitGUI(); } } GUILayout.EndHorizontal(); curve.VertexMode = (SplinePolyLine.VertexCalculation)EditorGUILayout.EnumPopup(new GUIContent("Vertex Generation"), curve.VertexMode); switch (curve.VertexMode) { case SplinePolyLine.VertexCalculation.ByAngle: curve.Angle = Mathf.Max(0, EditorGUILayout.FloatField(new GUIContent("Angle"), curve.Angle)); if (curve.Angle == 0) { EditorGUILayout.HelpBox("Angle must be >0", MessageType.Error); } curve.Distance = EditorGUILayout.FloatField(new GUIContent("Minimum Distance"), curve.Distance); break; } GUILayout.EndVertical(); }