private void DrawSpecialItem(TexImporterSetting.SpecialItem item, int index)
        {
            var hashCode = item.GetHashCode();

            EditorGUILayout.BeginHorizontal("box");
            showMap[hashCode] = EditorGUILayout.Foldout(
                showMap.GetValueOrDefault(hashCode),
                $"SpecialItem{index} [Content:{item.FilterContent}]",
                true
                );
            if (GUILayout.Button("X", GUILayout.Width(20f)))
            {
                impSettings.SpecialItems.RemoveAt(index);
            }

            EditorGUILayout.EndHorizontal();

            if (showMap[hashCode])
            {
                EditorGUI.indentLevel++;
                EditorGUILayout.BeginVertical("box");

                item.FilterContent = UTGUI.Text("Content", item.FilterContent);
                item.IgnoreCase    = UTGUI.Toggle("IgnoreCase", item.IgnoreCase);

                item.FilterContentType = UTGUI.Enum("ContentType", item.FilterContentType);
                item.FilterMode        = UTGUI.Enum("MatchMode", item.FilterMode);

                DrawSetting(item.Setting, true);

                EditorGUILayout.EndVertical();
                EditorGUI.indentLevel--;
            }
        }
        private void DrawSpecialItems()
        {
            showSpecials =
                EditorGUILayout.BeginFoldoutHeaderGroup(showSpecials, "Special Items");

            EditorGUI.indentLevel++;

            if (showSpecials)
            {
                EditorGUILayout.BeginVertical("box");

                if (impSettings.SpecialItems == null)
                {
                    impSettings.SpecialItems = new List <TexImporterSetting.SpecialItem>();
                }

                for (var i = 0; i < impSettings.SpecialItems.Count; i++)
                {
                    var specialItem = impSettings.SpecialItems[i];
                    DrawSpecialItem(specialItem, i);
                }

                EditorGUILayout.BeginHorizontal();

                if (GUILayout.Button("Add"))
                {
                    var newSpecialItem = new TexImporterSetting.SpecialItem();
                    impSettings.SpecialItems.Add(newSpecialItem);
                }

                if (GUILayout.Button("Clear"))
                {
                    impSettings.SpecialItems.Clear();
                }

                EditorGUILayout.EndHorizontal();


                EditorGUILayout.EndVertical();
            }

            EditorGUI.indentLevel--;

            EditorGUILayout.EndFoldoutHeaderGroup();
        }
        internal static bool CheckSpecialItemMatch(
            TexImporterSetting.SpecialItem specialItem,
            string importerName
            )
        {
            var filterContent = specialItem.FilterContent;

            if (filterContent.IsNOE())
            {
                return(false);
            }

            if (specialItem.IgnoreCase)
            {
                filterContent = specialItem.FilterContent.ToLower();
                importerName  = importerName.ToLower();
            }

            switch (specialItem.FilterMode)
            {
            case ConditionMethod.Regex:
                return(Regex.IsMatch(
                           importerName,
                           filterContent
                           ));

            case ConditionMethod.Contain:
                return(importerName.Contains(filterContent));

            case ConditionMethod.Equals:
                return(importerName.Equals(filterContent));

            case ConditionMethod.StartWith:
                return(importerName.StartsWith(filterContent));

            case ConditionMethod.EndWith:
                return(importerName.EndsWith(filterContent));
            }

            return(false);
        }