namespace Dreamteck.Splines.Editor
{
    using UnityEngine;
    using System.Collections;
    using UnityEditor;

    [CustomEditor(typeof(TubeGenerator))]
    [CanEditMultipleObjects]
    public class TubeGeneratorEditor : MeshGenEditor
    {

        protected override void BodyGUI()
        {
            base.BodyGUI();
            TubeGenerator tubeGenerator = (TubeGenerator)target;
            serializedObject.Update();
            SerializedProperty sides = serializedObject.FindProperty("_sides");
            SerializedProperty capMode = serializedObject.FindProperty("_capMode");
            SerializedProperty revolve = serializedObject.FindProperty("_revolve");

            EditorGUI.BeginChangeCheck();
            EditorGUILayout.Space();
            EditorGUILayout.LabelField("Shape", EditorStyles.boldLabel);
            EditorGUILayout.PropertyField(sides, new GUIContent("Sides"));
            EditorGUILayout.PropertyField(capMode, new GUIContent("Cap"));
            EditorGUILayout.PropertyField(revolve, new GUIContent("Revolve"));
            if(capMode.intValue == (int)TubeGenerator.CapMethod.Round)
            {
                SerializedProperty latitude = serializedObject.FindProperty("_roundCapLatitude");
                EditorGUILayout.PropertyField(latitude, new GUIContent("Cap Latitude"));
            }
            if (sides.intValue < 3) sides.intValue = 3;
            if (EditorGUI.EndChangeCheck()) serializedObject.ApplyModifiedProperties();

            UVControls(tubeGenerator);
            SerializedProperty uvTwist = serializedObject.FindProperty("_uvTwist");
            EditorGUILayout.PropertyField(uvTwist, new GUIContent("UV Twist"));
            if (capMode.intValue != 0)
            {
                SerializedProperty capUVScale = serializedObject.FindProperty("_capUVScale");
                EditorGUILayout.PropertyField(capUVScale, new GUIContent("Cap UV Scale"));
            }
        }

    }
}