protected override void DrawCustomFooter()
        {
            ButtonIconProfileTexture iconProfile = (ButtonIconProfileTexture)target;

            UnityEditor.EditorGUILayout.LabelField("Custom Icons", UnityEditor.EditorStyles.boldLabel);

            for (int i = 0; i < iconProfile.CustomIcons.Length; i++)
            {
                Texture2D icon = iconProfile.CustomIcons[i];
                icon = (Texture2D)UnityEditor.EditorGUILayout.ObjectField(icon != null ? icon.name : "(Empty)", icon, typeof(Texture2D), false, GUILayout.MaxHeight(textureSize));
                iconProfile.CustomIcons[i] = icon;
            }

            if (GUILayout.Button("Add custom icon"))
            {
                System.Array.Resize <Texture2D>(ref iconProfile.CustomIcons, iconProfile.CustomIcons.Length + 1);
            }
        }
        public override void OnInspectorGUI()
        {
            ButtonIconProfileTexture iconProfile = (ButtonIconProfileTexture)target;
            CompoundButtonIcon       iconButton  = (CompoundButtonIcon)targetComponent;

            HUXEditorUtils.BeginProfileBox();

            HUXEditorUtils.BeginSectionBox("Material & mesh properties");
            iconProfile._IconNotFound_       = (Texture2D)EditorGUILayout.ObjectField("Icon not found texture", iconProfile._IconNotFound_, typeof(Texture2D), false, GUILayout.MaxHeight(35f), GUILayout.MaxHeight(35f));
            iconProfile.IconMesh             = (Mesh)EditorGUILayout.ObjectField("Icon mesh", iconProfile.IconMesh, typeof(Mesh), false);
            iconProfile.IconMaterial         = (Material)EditorGUILayout.ObjectField("Icon material", iconProfile.IconMaterial, typeof(Material), false);
            iconProfile.AlphaColorProperty   = HUXEditorUtils.MaterialPropertyName(iconProfile.AlphaColorProperty, iconProfile.IconMaterial, ShaderUtil.ShaderPropertyType.Color, false);
            iconProfile.AlphaTransitionSpeed = EditorGUILayout.Slider("Alpha Transition Speed", iconProfile.AlphaTransitionSpeed, 0f, 2f);
            HUXEditorUtils.EndSectionBox();

            HUXEditorUtils.BeginSectionBox("Textures defined in profile");
            if (iconButton == null || showTextures)
            {
                var properties = iconProfile.GetType().GetFields();
                foreach (var property in properties)
                {
                    if (property.FieldType == typeof(Texture2D) && !property.Name.StartsWith("_"))
                    {
                        Texture2D iconVal = (Texture2D)property.GetValue(iconProfile);
                        iconVal = (Texture2D)EditorGUILayout.ObjectField(property.Name, iconVal, typeof(Texture2D), false, GUILayout.MaxHeight(textureSize));
                        property.SetValue(iconProfile, iconVal);
                    }
                }
                HUXEditorUtils.EndSectionBox();

                HUXEditorUtils.BeginSectionBox("Custom texture array");
                if (GUILayout.Button("Add custom icon"))
                {
                    System.Array.Resize <Texture2D>(ref iconProfile.CustomIcons, iconProfile.CustomIcons.Length + 1);
                }
                for (int i = 0; i < iconProfile.CustomIcons.Length; i++)
                {
                    Texture2D icon = iconProfile.CustomIcons[i];
                    icon = (Texture2D)EditorGUILayout.ObjectField(icon != null ? icon.name : "(Empty)", icon, typeof(Texture2D), false, GUILayout.MaxHeight(textureSize));
                    iconProfile.CustomIcons[i] = icon;
                }
                if (iconButton != null)
                {
                    if (GUILayout.Button("Hide icon textures"))
                    {
                        showTextures = false;
                    }
                }
            }
            else
            {
                if (GUILayout.Button("Show icon textures"))
                {
                    showTextures = true;
                }
            }
            HUXEditorUtils.EndSectionBox();

            HUXEditorUtils.EndProfileBox();

            HUXEditorUtils.SaveChanges(target, serializedObject);
        }