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--;
            }
        }
        public override void OnInspectorGUI()
        {
            if (targets.Length == 1)
            {
                EditorGUI.BeginChangeCheck();

                EditorGUILayout.BeginHorizontal("box");
                impSettings.IncludeChild = UTGUI.Toggle(
                    "Recursive",
                    impSettings.IncludeChild
                    );
                EditorGUILayout.EndHorizontal();

                DrawDefaultSetting();
                GUILayout.Space(1f);
                DrawSpecialItems();


                if (EditorGUI.EndChangeCheck())
                {
                    EditorUtility.SetDirty(impSettings);
                }

                GUILayout.BeginHorizontal();

                if (EditorUtility.IsDirty(impSettings))
                {
                    if (GUILayout.Button("Save", GUILayout.Height(30f)))
                    {
                        AssetDatabase.SaveAssets();
                    }
                }

                DrawRefreshBtn();

                GUILayout.EndHorizontal();
            }
            else
            {
                DrawRefreshBtn();
            }

            if (GUILayout.Button("FixAsset", GUILayout.Height(30f)))
            {
                foreach (var v in targets)
                {
                    EditorUtility.SetDirty(v);
                }

                AssetDatabase.SaveAssets();
            }
        }
        private void OnGUI()
        {
            if (DrawWorking(guidMapGen))
            {
                return;
            }

            findThingType = UTGUI.EnumToolbar(findThingType);

            EditorGUILayout.BeginVertical("box");

            scrollerPos = EditorGUILayout.BeginScrollView(scrollerPos);

            switch (findThingType)
            {
            case FindThingType.Assets:
                DrawFindAssetView();
                break;

            case FindThingType.CustomStr:
                DrawFindStrView();
                break;

            case FindThingType.BuiltinComponent:
                DrawFindBuiltinComponentView();
                break;
            }

            EditorGUILayout.EndScrollView();

            EditorGUILayout.EndVertical();

            GUILayout.BeginVertical();
            GUILayout.FlexibleSpace();
            DrawOptionsView();
            GUILayout.EndVertical();
        }
Exemple #4
0
    private void OnGUI()
    {
        curTab = UTGUI.EnumToolbar(curTab);
        switch (curTab)
        {
        case Tab.All:
            drawHistory(position.height / 2);
            drawBookmark();
            break;

        case Tab.Bookmark:
            drawBookmark();
            break;

        case Tab.History:
            drawHistory();
            break;
        }

        void drawHistory(float height = -1)
        {
            scrollPosHistory = height >= 0
                ? EditorGUILayout.BeginScrollView(scrollPosHistory, false, false, GUILayout.Height(height))
                : EditorGUILayout.BeginScrollView(scrollPosHistory, false, false);

            var removeCount = histories.RemoveAll(v => !v.asset);

            if (removeCount > 0)
            {
                saveHistories();
            }

            for (var i = histories.Count - 1; i >= 0; i--)
            {
                var v = histories[i];
                EditorGUILayout.ObjectField(v.asset, v.AssetType, false);
                GUILayout.Space(1.5f);
            }

            EditorGUILayout.EndScrollView();
        }

        void drawBookmark(float height = -1)
        {
            EditorGUILayout.BeginVertical("box");
            scrollPosBookmark = height >= 0
                ? EditorGUILayout.BeginScrollView(scrollPosBookmark, false, false, GUILayout.Height(height))
                : EditorGUILayout.BeginScrollView(scrollPosBookmark, false, false);

            for (var i = 0; i < bookmarks.Count; i++)
            {
                var v = bookmarks[i];
                if (v.path.IsNOE())
                {
                    bookmarks.RemoveAt(i);
                    saveBookmarks();
                    i--;
                    continue;
                }

                drawPath(v, i);
            }

            EditorGUILayout.BeginVertical("box", GUILayout.Height(30f));
            GUILayout.Space(10f);
            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            GUILayout.Label("Drag folder here to add bookmark");
            GUILayout.FlexibleSpace();
            EditorGUILayout.EndHorizontal();
            GUILayout.Space(10f);
            EditorGUILayout.EndVertical();
            var dragObjs = UTGUI.HandleDrag();

            if (dragObjs != null && dragObjs.Length > 0)
            {
                foreach (var obj in dragObjs)
                {
                    if (obj != null && obj is DefaultAsset)
                    {
                        var path = AssetDatabase.GetAssetPath(obj);
                        if (!bookmarks.Exists(v => v.path == path))
                        {
                            bookmarks.Add(new Bookmark(path));
                            saveBookmarks();
                            Repaint();
                        }
                    }
                }
            }

            EditorGUILayout.EndScrollView();
            EditorGUILayout.EndVertical();
        }

        void drawPath(Bookmark bookmark, int index)
        {
            GUILayout.BeginHorizontal();

            GUILayout.BeginVertical();
            GUILayout.Space(4f);
            bookmark.path = EditorGUILayout.TextField(bookmark.path);
            GUILayout.EndVertical();

            if (GUILayout.Button(bookmark.name))
            {
                UToolsUtil.HighlightProjectPath(bookmark.path);
            }

            GUILayout.EndHorizontal();
            var dragObjs = UTGUI.HandleDrag(DragAndDropVisualMode.Copy);

            if (dragObjs != null && dragObjs.Length > 0)
            {
                foreach (var obj in dragObjs)
                {
                    if (obj.IsAsset())
                    {
                        var assetPath = AssetDatabase.GetAssetPath(obj);
                        var assetName = Path.GetFileName(assetPath);
                        var newPath   = Path.Combine(bookmark.path, assetName);
                        if (newPath == assetPath)
                        {
                            return;
                        }

                        var error = AssetDatabase.MoveAsset(assetPath, newPath);
                        if (error.IsNNOE())
                        {
                            Debug.LogError(error);
                        }
                    }
                }
            }
        }
    }
Exemple #5
0
        private void drawTexFormatControl(TexFormatController control, int index)
        {
            GUILayout.BeginVertical();
            {
                drawHeader();
                if (showTexControlMap[index])
                {
                    GUILayout.BeginVertical("box");

                    EditorGUI.BeginChangeCheck();
                    {
                        control.enable = EditorGUILayout.Toggle("Enable", control.enable);

                        UTGUI.splitLine();

                        EditorGUI.BeginDisabledGroup(!control.enable);
                        {
                            drawCondition();

                            UTGUI.splitLine();

                            control.recursive = EditorGUILayout.Toggle("Recursive", control.recursive);

                            drawPresetDisableGroup();
                            drawOtherTextureSetting();

                            checkPreset(control);

                            EditorGUI.EndDisabledGroup();
                        }

                        if (EditorGUI.EndChangeCheck())
                        {
                            EditorUtility.SetDirty(setting);
                        }
                    }

                    GUILayout.EndVertical();
                }

                GUILayout.EndVertical();
            }


            void drawHeader()
            {
                GUILayout.BeginHorizontal("box");

                string header = $"Preset:{control.preset}";

                if (control.conditionMethod != ConditionMethod.None)
                {
                    header = header + $", Condition:{control.conditionMethod}({control.conditionText})";
                }

                showTexControlMap[index] = EditorGUILayout.Foldout(showTexControlMap[index], header, true);

                float width = 30f;

                using (new EditorGUI.DisabledScope(index <= 0))
                {
                    if (GUILayout.Button("↑", GUILayout.Width(width)))
                    {
                        var temp = setting.texFormatControllers[index - 1];
                        setting.texFormatControllers[index - 1] = control;
                        setting.texFormatControllers[index]     = temp;
                        EditorUtility.SetDirty(setting);
                    }
                }

                using (new EditorGUI.DisabledScope(index >= setting.texFormatControllers.Count - 1))
                {
                    if (GUILayout.Button("↓", GUILayout.Width(width)))
                    {
                        var temp = setting.texFormatControllers[index + 1];
                        setting.texFormatControllers[index + 1] = control;
                        setting.texFormatControllers[index]     = temp;
                        EditorUtility.SetDirty(setting);
                    }
                }

                if (GUILayout.Button("X", GUILayout.Width(width)))
                {
                    willRemoveTexControl = index;
                }

                GUILayout.EndHorizontal();
            }

            void drawCondition()
            {
                control.conditionMethod = UTGUI.Enum("Condition", control.conditionMethod);
                if (control.conditionMethod != ConditionMethod.None)
                {
                    control.conditionContent = UTGUI.Enum("ContentType", control.conditionContent);
                    control.conditionText    = UTGUI.Text("ContentText", control.conditionText);
                    control.ignoreCase       = UTGUI.Toggle("IgnoreCase", control.ignoreCase);
                }
            }

            void drawPresetDisableGroup()
            {
                control.preset = UTGUI.Enum("Preset: ", control.preset);
                // preset disable group
                var haspreset = control.preset != PresetSettings.None;

                EditorGUI.BeginDisabledGroup(haspreset);
                {
                    control.textureType = UTGUI.Enum("TexType: ", control.textureType);
                    if (control.textureType == TextureImporterType.Default)
                    {
                        control.textureShape = UTGUI.Enum("TexShape: ", control.textureShape);
                    }

                    control.mipMapEnable = EditorGUILayout.Toggle("MipMap?", control.mipMapEnable);

                    control.wrapMode = UTGUI.Enum("Wrap", control.wrapMode);

                    if (control.alphaMode != AlphaMode.Auto)
                    {
                        control.overrideAndroidFormat = UTGUI.Enum("Android", control.overrideAndroidFormat);
                        control.overrideIOSFormat     = UTGUI.Enum("IOS", control.overrideIOSFormat);
                        control.overridePCFormat      = UTGUI.Enum("PC", control.overridePCFormat);
                    }

                    EditorGUI.EndDisabledGroup();
                }
            }

            void drawOtherTextureSetting()
            {
                // sprite
                EditorGUI.BeginDisabledGroup(control.textureType != TextureImporterType.Sprite);
                {
                    control.atlasMode = UTGUI.Enum("AtlasMode: ", control.atlasMode);
                    if (control.atlasMode == AtlasMode.Custom)
                    {
                        control.packingTag = UTGUI.Text("Atlas: ", control.packingTag);
                    }

                    EditorGUI.EndDisabledGroup();
                }

                control.readWriteEnable = EditorGUILayout.Toggle("Readable?", control.readWriteEnable);
                control.filterMode      = UTGUI.Enum("Filter", control.filterMode);
                control.maxSize         = UTGUI.Int("MaxSize", control.maxSize);
                control.alphaMode       = UTGUI.Enum("AlphaMode", control.alphaMode);
                control.nPOTScale       = UTGUI.Enum("NPOT", control.nPOTScale);
            }
        }
        private void DrawSetting(
            TexImporterSetting.Settings setting,
            bool foldout,
            string header = "Settings"
            )
        {
            if (foldout)
            {
                showMap[setting.GetHashCode()] = EditorGUILayout.Foldout(
                    showMap.GetValueOrDefault(setting.GetHashCode()),
                    header,
                    true
                    );
            }

            if (!foldout || showMap[setting.GetHashCode()])
            {
                EditorGUI.indentLevel++;

                EditorGUILayout.BeginVertical("box");
                setting.PresetSetting = UTGUI.Enum("Preset: ", setting.PresetSetting);

                var haspreset =
                    setting.PresetSetting != PresetSettings.None;
                EditorGUI.BeginDisabledGroup(haspreset);

                setting.TextureType = UTGUI.Enum("TexType: ", setting.TextureType);
                if (setting.TextureType == TextureImporterType.Default)
                {
                    setting.TextureShape = UTGUI.Enum("TexShape: ", setting.TextureShape);
                }

//            setting.AlphaIsTransparency = MaidEditorGUI.Toggle(
//                "Alpha Is Transparency?",
//                setting.AlphaIsTransparency
//            );
                setting.MipMapEnable = UTGUI.Toggle(
                    "MipMap?",
                    setting.MipMapEnable
                    );
                setting.WrapMode = UTGUI.Enum("Wrap", setting.WrapMode);

                if (setting.AlphaMode != AlphaMode.Auto)
                {
                    setting.OverrideAndroidFormat = UTGUI.Enum(
                        "Android",
                        setting.OverrideAndroidFormat
                        );

                    setting.OverrideIOSFormat = UTGUI.Enum(
                        "IOS",
                        setting.OverrideIOSFormat
                        );

                    setting.OverridePCFormat = UTGUI.Enum(
                        "PC",
                        setting.OverridePCFormat
                        );
                }

                EditorGUI.EndDisabledGroup();

                EditorGUILayout.EndVertical();

                EditorGUILayout.BeginVertical("box");

                EditorGUI.BeginDisabledGroup(setting.TextureType != TextureImporterType.Sprite);

                setting.AtlasMode = UTGUI.Enum("AtlasMode: ", setting.AtlasMode);
                if (setting.AtlasMode == AtlasMode.Custom)
                {
                    setting.PackingTag = UTGUI.Text("Atlas: ", setting.PackingTag);
                }

                EditorGUI.EndDisabledGroup();

                setting.ReadWriteEnable = UTGUI.Toggle(
                    "Readable?",
                    setting.ReadWriteEnable
                    );

//                setting.SRGB = MaidEditorGUI.Toggle(
//                    "sRGB?",
//                    setting.SRGB
//                );

                setting.FilterMode = UTGUI.Enum("Filter", setting.FilterMode);
                setting.MaxSize    = UTGUI.Int("MaxSize", setting.MaxSize);
                setting.AlphaMode  = UTGUI.Enum("AlphaMode", setting.AlphaMode);
                setting.NPOTScale  = UTGUI.Enum("NPOT", setting.NPOTScale);
//                setting.Quality = MaidEditorGUI.Enum("Quality", setting.Quality);

                EditorGUILayout.EndVertical();

                EditorGUI.indentLevel--;

                CheckPreset(setting);
            }
        }
        private void DrawFindAssetView()
        {
            if (DrawWorking(assetRefFinder))
            {
                return;
            }

            EditorGUILayout.BeginHorizontal();

            findAssetMode = UTGUI.EnumToolbar(findAssetMode);

            if (findAssetMode == FindAssetsMode.Field)
            {
                whenShouldFind = WhenShouldFind.ClickFind;
            }

            EditorGUI.BeginDisabledGroup(findAssetMode == FindAssetsMode.Field);
            whenShouldFind = UTGUI.EnumToolbar(whenShouldFind);
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.EndHorizontal();

//            this.findAssetFrom = MaidEditorGUI.EnumToolbar<FindAssetFrom>(0x1004);

            var objType = ReferenceToolUtil.type_object;

            if (curFindAsset && !(curFindAsset is DefaultAsset))
            {
                objType = curFindAsset.GetType();
            }

            if (findAssetMode == FindAssetsMode.Field)
            {
                curFindAsset = EditorGUILayout.ObjectField(
                    "FindTarget:",
                    curFindAsset,
                    objType,
                    false
                    );
            }
            else
            {
                EditorGUI.BeginDisabledGroup(true);
                EditorGUILayout.ObjectField("FindTarget:", curFindAsset, objType, false);
                EditorGUI.EndDisabledGroup();
            }

            if (enableReplace)
            {
                EditorGUILayout.BeginHorizontal();

                replaceTargetAsset = EditorGUILayout.ObjectField(
                    "ReplaceTarget:",
                    replaceTargetAsset,
                    objType,
                    false
                    );

                EditorGUILayout.EndHorizontal();
            }

            if (curFindAsset is GameObject)
            {
                enableReplace = false;
            }
            else
            {
                enableReplace = EditorGUILayout.ToggleLeft(
                    "EnableReplace",
                    enableReplace,
                    GUILayout.Width(100f)
                    );
            }

            if (GUILayout.Button("Find"))
            {
                DoFindAssets();
            }

            DrawResultView(assetRefFinder);
        }