public override void OnInspectorGUI()
    {
        tk2dGuiUtility.LookLikeInspector();
        base.OnInspectorGUI();

        tk2dUIDropDownMenu dropdownMenu = (tk2dUIDropDownMenu)target;

        dropdownMenu.MenuLayoutItem     = EditorGUILayout.ObjectField("Menu LayoutItem", dropdownMenu.MenuLayoutItem, typeof(tk2dUILayout), true) as tk2dUILayout;
        dropdownMenu.TemplateLayoutItem = EditorGUILayout.ObjectField("Template LayoutItem", dropdownMenu.TemplateLayoutItem, typeof(tk2dUILayout), true) as tk2dUILayout;

        if (dropdownMenu.MenuLayoutItem == null)
        {
            dropdownMenu.height = EditorGUILayout.FloatField("Height", dropdownMenu.height, GUILayout.ExpandWidth(false));
        }

        tk2dUIMethodBindingHelper methodBindingUtil = new tk2dUIMethodBindingHelper();

        dropdownMenu.SendMessageTarget = methodBindingUtil.BeginMessageGUI(dropdownMenu.SendMessageTarget);
        methodBindingUtil.MethodBinding("On Selected Item Change", typeof(tk2dUIDropDownMenu), dropdownMenu.SendMessageTarget, ref dropdownMenu.SendMessageOnSelectedItemChangeMethodName);
        methodBindingUtil.EndMessageGUI();

        if (GUI.changed)
        {
            tk2dUtil.SetDirty(target);
        }
    }
    public void OnSceneGUI()
    {
        bool wasChange = false;
        tk2dUIDropDownMenu dropdownMenu         = (tk2dUIDropDownMenu)target;
        tk2dUIDropDownItem dropdownItemTemplate = dropdownMenu.dropDownItemTemplate;

        // Get rescaled transforms
        Matrix4x4 m  = dropdownMenu.transform.localToWorldMatrix;
        Vector3   up = m.MultiplyVector(Vector3.up);

        // Vector3 right = m.MultiplyVector(Vector3.right);

        if (dropdownMenu.MenuLayoutItem == null)
        {
            float newDropDownButtonHeight = tk2dUIControlsHelperEditor.DrawLengthHandles("Dropdown Button Height", dropdownMenu.height, dropdownMenu.transform.position + (up * (dropdownMenu.height / 2)), -up, Color.red, .15f, .3f, .05f);
            if (newDropDownButtonHeight != dropdownMenu.height)
            {
                tk2dUndo.RecordObject(dropdownMenu, "Dropdown Button Height Changed");
                dropdownMenu.height = newDropDownButtonHeight;
                wasChange           = true;
            }
        }

        if (dropdownItemTemplate != null)
        {
            float yPosDropdownItemTemplate = (dropdownMenu.MenuLayoutItem != null) ? dropdownMenu.MenuLayoutItem.bMin.y : (-dropdownMenu.height);

            if (dropdownItemTemplate.transform.localPosition.y != yPosDropdownItemTemplate)
            {
                dropdownItemTemplate.transform.localPosition = new Vector3(dropdownItemTemplate.transform.localPosition.x, yPosDropdownItemTemplate, dropdownItemTemplate.transform.localPosition.z);
                tk2dUtil.SetDirty(dropdownItemTemplate.transform);
            }

            if (dropdownMenu.TemplateLayoutItem == null)
            {
                float newDropDownItemTemplateHeight = tk2dUIControlsHelperEditor.DrawLengthHandles("Dropdown Item Template Height", dropdownItemTemplate.height, dropdownMenu.transform.position - (up * (dropdownMenu.height / 2)), -up, Color.blue, .15f, .4f, .05f);
                if (newDropDownItemTemplateHeight != dropdownItemTemplate.height)
                {
                    tk2dUndo.RecordObject(dropdownItemTemplate, "Dropdown Template Height Changed");
                    dropdownItemTemplate.height = newDropDownItemTemplateHeight;
                    tk2dUtil.SetDirty(dropdownItemTemplate);
                }
            }
        }

        if (wasChange)
        {
            tk2dUtil.SetDirty(dropdownMenu);
        }
    }