private Rect ColLabel(GUIContent label, ref bool use)
        {
            Rect r       = ColLabel(label);
            Rect toggleR = r;

            toggleR.width = 16;
            InspectorWidgets.MiniToggle(t, r, GUIContent.none, ref use, false);

            return(r);
        }
        private void ParamSection()
        {
            if (PaddedBoxGS == null)
            {
                PaddedBoxGS = new GUIStyle((GUIStyle)"HelpBox")
                {
                    normal = ((GUIStyle)"GroupBox").normal, padding = new RectOffset(4, 4, 4, 4)
                }
            }
            ;

            if (PaddedGS == null)
            {
                PaddedGS = new GUIStyle(PaddedBoxGS)
                {
                    normal = ((GUIStyle)"MiniLabel").normal
                }
            }
            ;

            t.useGlobalParamSettings = EditorGUILayout.ToggleLeft("Use Global Settings", t.useGlobalParamSettings);

            showAdvancedParams[uid] = IndentedFoldout(new GUIContent("Adv. Parameter Settings"), showAdvancedParams[uid], 1);

            if (showAdvancedParams[uid])
            {
                var indenthold = EditorGUI.indentLevel;

                EditorGUI.indentLevel = 0;
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.GetControlRect(GUILayout.MinWidth(COL1));
                EditorGUILayout.LabelField(label_Interp, (GUIStyle)"MiniLabel", GUILayout.MaxWidth(COL2));
                EditorGUILayout.LabelField(label_Extrap, (GUIStyle)"MiniLabel", GUILayout.MaxWidth(COL3));
                EditorGUILayout.LabelField(label_Default, (GUIStyle)"MiniLabel", GUILayout.MaxWidth(COL4));
                EditorGUILayout.EndHorizontal();

                var defs = t.sharedParamDefaults;

                if (t.useGlobalParamSettings)
                {
                    EditorGUILayout.BeginHorizontal();
                    InspectorWidgets.MiniToggle(t, EditorGUILayout.GetControlRect(GUILayout.MinWidth(COL1)), new GUIContent("Ints"), ref defs.includeInts);
                    DrawInterp(AnimatorControllerParameterType.Int, ref defs.interpolateInts);
                    DrawExtrap(AnimatorControllerParameterType.Int, ref defs.extrapolateInts);
                    DrawDefaults(AnimatorControllerParameterType.Int, ref defs.defaultInt);
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    InspectorWidgets.MiniToggle(t, EditorGUILayout.GetControlRect(GUILayout.MinWidth(COL1)), new GUIContent("Floats"), ref defs.includeFloats);
                    DrawInterp(AnimatorControllerParameterType.Float, ref defs.interpolateFloats);
                    DrawExtrap(AnimatorControllerParameterType.Float, ref defs.extrapolateFloats);
                    DrawDefaults(AnimatorControllerParameterType.Float, ref defs.defaultFloat);
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    InspectorWidgets.MiniToggle(t, EditorGUILayout.GetControlRect(GUILayout.MinWidth(COL1)), new GUIContent("Bools"), ref defs.includeBools);
                    EditorGUILayout.GetControlRect(GUILayout.MaxWidth(COL2));
                    DrawExtrap(AnimatorControllerParameterType.Bool, ref defs.extrapolateBools);
                    DrawDefaults(AnimatorControllerParameterType.Bool, ref defs.defaultBool);
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    var tr = EditorGUILayout.GetControlRect(GUILayout.MinWidth(COL1));
                    InspectorWidgets.MiniToggle(t, tr, triggerLabel, ref defs.includeTriggers);
                    if (t.sharedParamDefaults.includeTriggers)
                    {
                        GUI.DrawTexture(new Rect(tr)
                        {
                            x = 2, width = 16
                        }, EditorGUIUtility.FindTexture("console.warnicon"));
                    }
                    EditorGUILayout.GetControlRect(GUILayout.MaxWidth(COL2));
                    DrawExtrap(AnimatorControllerParameterType.Trigger, ref defs.extrapolateTriggers);
                    DrawDefaults(AnimatorControllerParameterType.Trigger, ref defs.defaultTrigger);
                    EditorGUILayout.EndHorizontal();
                }
                else
                {
                    var names = ParameterSettings.RebuildParamSettings(a, ref t.sharedParamSettings, ref t.paramCount, t.sharedParamDefaults);
                    serializedObject.Update();

                    var pms = t.sharedParamSettings;
                    for (int i = 0; i < t.paramCount; ++i)
                    {
                        var pm = pms[i];

                        EditorGUILayout.BeginHorizontal();

                        // Type Letter Box (left vertical)
                        EditorGUILayout.BeginVertical(PaddedBoxGS, GUILayout.MaxWidth(8));
                        TypeLabel(EditorGUILayout.GetControlRect(GUILayout.MaxWidth(12)), pm.paramType);

                        EditorGUILayout.EndVertical();

                        // Main Vertical (Right)
                        EditorGUILayout.BeginVertical((pm.include) ? PaddedBoxGS : PaddedGS);

                        EditorGUILayout.BeginHorizontal();

                        InspectorWidgets.MiniToggle(t, EditorGUILayout.GetControlRect(GUILayout.MinWidth(COL1)), new GUIContent(names[i]), ref pm.include);

                        EditorGUI.BeginDisabledGroup(!pm.include);
                        DrawInterp(pm.paramType, ref pm.interpolate);
                        DrawExtrap(pm.paramType, ref pm.extrapolate);
                        DrawDefaults(pm.paramType, ref pm.defaultValue);
                        EditorGUI.EndDisabledGroup();

                        EditorGUILayout.EndHorizontal();

                        // Compression Row
                        if (pm.include)
                        {
                            if (pm.paramType == AnimatorControllerParameterType.Float || pm.paramType == AnimatorControllerParameterType.Int)
                            {
                                var sharedPSs = serializedObject.FindProperty("sharedParamSettings");
                                var ps        = sharedPSs.GetArrayElementAtIndex(i);

                                var fcrusher = (pm.paramType == AnimatorControllerParameterType.Float) ? ps.FindPropertyRelative("fcrusher") : ps.FindPropertyRelative("icrusher");

                                var r = EditorGUILayout.GetControlRect(false, EditorGUI.GetPropertyHeight(fcrusher));

                                Rect rectCrusher = new Rect(r)
                                {
                                    height = 16
                                };
                                EditorGUI.PropertyField(rectCrusher, fcrusher);
                            }
                        }

                        // End Right Vertical
                        EditorGUILayout.EndVertical();

                        // End Parameter
                        EditorGUILayout.EndHorizontal();
                    }
                }

                EditorGUI.indentLevel = indenthold;
            }
        }
        private void StatesSection()
        {
            NormTimeCompressEnum(EditorGUILayout.GetControlRect(), new GUIContent("Compress NormalizedTime"), ref t.normalizedTimeCompress);

            InspectorWidgets.MiniToggle(t, EditorGUILayout.GetControlRect(), label_syncLayers, ref t.syncLayers);
        }