예제 #1
0
    protected override void OnEnable()
    {
        if (indexState == null)
        {
            indexState = new TreeViewState();
        }
        libIndex = new SeanLibIndex(indexState, true);
        libIndex.RefreshTreeData(this);
        libIndex.SetSelection(new List <int>()
        {
            EditorPrefs.GetInt(IndexKey, 1)
        });

        VisualElement root = rootVisualElement;

        var visualTree = AssetDBHelper.LoadAsset <VisualTreeAsset>(FileAsset.BaseType, FileAsset.UXML);
        var styleSheet = AssetDBHelper.LoadAsset <StyleSheet>(FileAsset.BaseType, FileAsset.USS);

        root.styleSheets.Add(styleSheet);
        visualTree.CloneTree(root);

        //目录
        EditorIndex = root.Q <VisualElement>("EditorIndex");
        EditorIndexContent_IMGUI = EditorIndex.Q <IMGUIContainer>("EditorIndexContent_IMGUI");
        EditorIndexContent_IMGUI.onGUIHandler = () => { libIndex.OnGUI(EditorIndexContent_IMGUI.contentRect); };
        //内容
        EditorContent = root.Q <VisualElement>("EditorContent");
    }
예제 #2
0
            public override void Action(int instanceId, string pathName, string resourceFile)
            {
                var template = AssetDBHelper.LoadAsset <UnityEngine.Object>(resourceFile);

                FileTools.Copy(PathTools.Asset2File(AssetDatabase.GetAssetPath(template)), pathName, true);
                AssetDatabase.Refresh();
            }
예제 #3
0
            public override void Action(int instanceId, string pathName, string resourceFile)
            {
                var template = Object.Instantiate(AssetDBHelper.LoadAsset <TemplateAsset>(resourceFile));

                DestroyImmediate(template);
                FileTools.WriteAllText(pathName, template.Template);
                AssetDatabase.Refresh();
            }
예제 #4
0
 public override void OnEnable(SeanLibManager drawer)
 {
     template = null;
     shaderTemplates.Clear();
     elementTemplates.Clear();
     shaderPresets.Clear();
     elements.Clear();
     elementTemplates.AddRange(AssetDBHelper.LoadAssets <ShaderElement>("t:" + typeof(ShaderElement)));
     shaderTemplates.AddRange(AssetDBHelper.LoadAssets <ShaderTemplate>("t:" + typeof(ShaderTemplate)));
     shaderPresets.AddRange(AssetDBHelper.LoadAssets <ShaderPreset>("t:" + typeof(ShaderPreset)));
     base.OnEnable(drawer);
 }
예제 #5
0
        public virtual void SetupElements(VisualElement container, ShaderLibrary Lab)
        {
            VisualTreeAsset nodeAsset = AssetDBHelper.LoadAsset <VisualTreeAsset>(files.BaseType, files.UXML);
            StyleSheet      style     = AssetDBHelper.LoadAsset <StyleSheet>(files.BaseType, files.USS);
            var             tree      = nodeAsset.CloneTree();

            container.Add(tree);
            tree.name = TemplateName;
            UIRoot    = container;
            UIRoot.styleSheets.Add(style);
            this.lab = Lab;
            DefaultSetupElements();
        }
예제 #6
0
    //static
    public static Color Get(string PaletteName, string ColorName, Color ifNull)
    {
        ColorPalette palette = null;

        if (!cache.TryGetValue(PaletteName, out palette))
        {
            if (AssetDBHelper.TryLoadAsset <ColorPalette>(PaletteName + " t: ColorPalette", out palette))
            {
                cache[PaletteName] = palette;
                return(palette.Get(ColorName, ifNull));
            }
            return(ifNull);
        }
        return(palette.Get(ColorName, ifNull));
    }
예제 #7
0
            public override void Action(int instanceId, string pathName, string resourceFile)
            {
                var csAsset   = AssetDBHelper.LoadAsset <FileTemplateAsset>("SeanLibEditorCsTemplate t:FileTemplateAsset");
                var uxmlAsset = AssetDBHelper.LoadAsset <FileTemplateAsset>("SeanLibEditorUXMLTemplate t:FileTemplateAsset");
                var usslAsset = AssetDBHelper.LoadAsset <FileTemplateAsset>("SeanLibEditorUssTemplate t:FileTemplateAsset");
                var dir       = Path.GetDirectoryName(pathName);
                var ClassName = Path.GetFileNameWithoutExtension(pathName);
                var Values    = new List <KeyWordValue>()
                {
                    new KeyWordValue("#CLASS_NAME#", ClassName)
                };

                csAsset.Generate(Values, dir);
                uxmlAsset.Generate(Values, dir);
                usslAsset.Generate(Values, dir);
                AssetDatabase.Refresh();
            }
예제 #8
0
            public override void Action(int instanceId, string pathName, string resourceFile)
            {
                var    template = Object.Instantiate(AssetDBHelper.LoadAsset <TemplateAsset>(resourceFile));
                var    input    = Path.GetFileNameWithoutExtension(pathName);
                string code;

                if (template.KeyWords.Length > 0)
                {
                    code = template.Generate(new List <KeyWordValue>()
                    {
                        new KeyWordValue(template.KeyWords[0].key, input)
                    });
                }
                else
                {
                    code = template.Template;
                }
                DestroyImmediate(template);
                FileTools.WriteAllText(pathName, code);
                AssetDatabase.Refresh();
            }
예제 #9
0
        public override void SetupUIElements()
        {
            base.SetupUIElements();
            //SetupElements
            //TamplateMask
            RefreshShaderTemplateMask();
            var selectShaderTemplate = EditorContent_Elements.Q <Button>("btn-SelectTemplate");

            selectShaderTemplate.clickable.clicked += () =>
            {
                SelectWindow <ShaderTemplate> .Show(shaderTemplates, "ShaderTemplates", new SelectWindow <ShaderTemplate> .CallBack()
                {
                    OnSelected = (e, i) =>
                    {
                        AddShaderTemplate(e);
                    }
                });
            };
            var selectPreset = EditorContent_Elements.Q <Button>("btn-SelectPreset");

            selectPreset.clickable.clicked += () =>
            {
                SelectWindow <ShaderPreset> .Show(shaderPresets, "ShaderPresets", new SelectWindow <ShaderPreset> .CallBack()
                {
                    OnSelected = (e, i) =>
                    {
                        var preset       = e;
                        var template     = AssetDBHelper.LoadAsset <ShaderTemplate>(preset.Template.name + " t: " + preset.Template.GetTargetTypeName());
                        var Ins_template = AddShaderTemplate(template);
                        preset.Template.ApplyTo(Ins_template);
                        foreach (var item in preset.Elements)
                        {
                            var ele     = AssetDBHelper.LoadAsset <ShaderElement>(item.GetTargetTypeName() + " t: " + item.GetTargetTypeName());
                            var Ins_ele = AddShadeElement(ele);
                            item.ApplyTo(Ins_ele);
                        }
                    }
                });
            };
            //ToolBox
            var addBtn = this.EditorContent_Elements.Q <ToolbarButton>("ToolBar_Add");

            addBtn.clickable.clicked += () =>
            {
                SelectWindow <ShaderElement> .Show(elementTemplates, "ElementsTemplates", new SelectWindow <ShaderElement> .CallBack()
                {
                    OnSelected = (e, i) =>
                    {
                        AddShadeElement(e);
                    },
                    WindowSize    = () => new Vector2(400, elementTemplates.Count * 25 + 40),
                    DrawSelection = (e, i) =>
                    {
                        if (e.AllowMultipleCount > 0)
                        {
                            var count = elements.FindAll(e1 => e1.GetType() == e.GetType()).Count;
                            if (count >= e.AllowMultipleCount)
                            {
                                OnGUIUtility.Vision.GUIEnabled(false);
                            }
                        }
                        if (e == null)
                        {
                            if (GUILayout.Button("null", SelectWindow <ShaderElement> .Styles.Selection))
                            {
                                SelectWindow <ShaderElement> .instance.Select(default(ShaderElement), i);
                                SelectWindow <ShaderElement> .instance.editorWindow.Close();
                                return;
                            }
                        }
                        else if (SelectWindow <ShaderElement> .instance.searchField.GeneralValid(e.ToString()))
                        {
                            if (GUILayout.Button(e.ToString(), SelectWindow <ShaderElement> .Styles.Selection))
                            {
                                SelectWindow <ShaderElement> .instance.Select(e, i);
                                SelectWindow <ShaderElement> .instance.editorWindow.Close();
                                return;
                            }
                        }
                        OnGUIUtility.Vision.GUIEnabled(true);
                    }
                });
            };
            var addPresetBtn = this.EditorContent_Elements.Q <ToolbarButton>("ToolBar_Preset");

            addPresetBtn.clickable.clicked += () =>
            {
                AddPreset();
            };
            //TemplateContainer
            //Container
            ShaderElementsContainer = this.EditorContent_Elements.Q <ScrollView>("ElementContainer");
            ShaderElementsContainer.Clear();
            //TODO:添加快捷键操作
            ShaderElementsContainer.AddManipulator(new ContainerManipulator(this));
            //Preivew
            InitPreview();
            //Generate
            var genrateButton = this.EditorContent_Elements.Q <Button>("btn-generate");

            genrateButton.clickable.clicked += OnGenerate;
        }
예제 #10
0
 public static T LoadTemplateAsset <T>(string search) where T : TemplateAsset
 {
     return(AssetDBHelper.LoadAsset <T>(search));
 }
예제 #11
0
 public GUIGifDrawer()
 {
     icon_play  = AssetDBHelper.LoadAsset <Texture2D>(this.GetType(), "../ic_play.png");
     icon_pause = AssetDBHelper.LoadAsset <Texture2D>(this.GetType(), "../ic_pause.png");
 }
예제 #12
0
        public override void SetupUIElements()
        {
            base.SetupUIElements();
            //ColorPalettes
            ColorPaletteObjs.Clear();
            var ColorPaletteAssets = AssetDBHelper.LoadAssets <ColorPalette>(" t:ColorPalette");


            var ColorPalettesRoot = new Foldout()
            {
                text = "ColorPalettes"
            };
            var DocHub = new Foldout()
            {
                text = "DocHub"
            };

            EditorContent_Elements.Add(ColorPalettesRoot);
            EditorContent_Elements.Add(DocHub);

            foreach (var item in ColorPaletteAssets)
            {
                ColorPaletteObjs.Add(new SerializedObject(item));
            }
            IMGUIContainer OnGUIColorPalette = new IMGUIContainer(() =>
            {
                v = EditorGUILayout.BeginScrollView(v);
                foreach (var sobj in ColorPaletteObjs)
                {
                    sobj.Update();
                    EditorGUI.BeginChangeCheck();
                    {
                        EditorGUILayout.ObjectField(sobj.targetObject, typeof(ColorPalette), false);
                        if (EditorGUIUtility.isProSkin)
                        {
                            EditorGUILayout.PropertyField(sobj.FindProperty("Dark"));
                        }
                        else
                        {
                            EditorGUILayout.PropertyField(sobj.FindProperty("Light"));
                        }
                        GUILayout.BeginHorizontal();
                        {
                            GUILayout.FlexibleSpace();
                            if (GUILayout.Button("Default"))
                            {
                                (sobj.targetObject as ColorPalette).SetDefault();
                                AssetDatabase.SaveAssets();
                            }
                        }
                        GUILayout.EndHorizontal();
                    }
                    if (EditorGUI.EndChangeCheck())
                    {
                        sobj.ApplyModifiedProperties();
                    }
                }
                EditorGUILayout.EndScrollView();
            });

            ColorPalettesRoot.Add(OnGUIColorPalette);
            IMGUIContainer OnGUIDocHub = new IMGUIContainer(() =>
            {
                v1 = EditorGUILayout.BeginScrollView(v1);
                EditorGUI.BeginChangeCheck();
                var autoGif = EditorGUILayout.Toggle("自动播放Gif", EditorUserSettings.GetConfigValue("DocAutoPlayGif") == "true");
                if (EditorGUI.EndChangeCheck())
                {
                    EditorUserSettings.SetConfigValue("DocAutoPlayGif", autoGif ? "true" : "false");
                }
                EditorGUILayout.EndScrollView();
            });

            DocHub.Add(OnGUIDocHub);
        }