예제 #1
0
 public void RefreshShaderTemplateMask()
 {
     if (template == null)
     {
         EditorContent_Elements.Q("Template-Shader_Mask").style.display     = DisplayStyle.Flex;
         EditorContent_Elements.Q("Template-Shader_Template").style.display = DisplayStyle.None;
     }
     else
     {
         EditorContent_Elements.Q("Template-Shader_Mask").style.display = DisplayStyle.None;
         var Template_Shader_Template = EditorContent_Elements.Q <TextField>("Template-Shader_Template");
         Template_Shader_Template.style.display = DisplayStyle.Flex;
         Template_Shader_Template.value         = template.Template;
     }
 }
예제 #2
0
 private void InitPreview()
 {
     Preview_text_Properties = EditorContent_Elements.Q <TextField>("Preview-text_Properties");
     Preview_text_Properties.RegisterValueChangedCallback((s) => { DisplayPreview(Preview_text_Properties); });
     Preview_text_Shader_Tags = EditorContent_Elements.Q <TextField>("Preview-text_Shader-Tags");
     Preview_text_Shader_Tags.RegisterValueChangedCallback((s) => { DisplayPreview(Preview_text_Shader_Tags); });
     Preview_text_Pass_Tags = EditorContent_Elements.Q <TextField>("Preview-text_Pass-Tags");
     Preview_text_Pass_Tags.RegisterValueChangedCallback((s) => { DisplayPreview(Preview_text_Pass_Tags); });
     Preview_text_Vert_Input = EditorContent_Elements.Q <TextField>("Preview-text_Vert-Input");
     Preview_text_Vert_Input.RegisterValueChangedCallback((s) => { DisplayPreview(Preview_text_Vert_Input); });
     Preview_text_Frag_Input = EditorContent_Elements.Q <TextField>("Preview-text_Frag-Input");
     Preview_text_Frag_Input.RegisterValueChangedCallback((s) => { DisplayPreview(Preview_text_Frag_Input); });
     Preview_text_Pass_properties = EditorContent_Elements.Q <TextField>("Preview-text_Pass-properties");
     Preview_text_Pass_properties.RegisterValueChangedCallback((s) => { DisplayPreview(Preview_text_Pass_properties); });
     Preview_text_Vert_process = EditorContent_Elements.Q <TextField>("Preview-text_Vert-process");
     Preview_text_Vert_process.RegisterValueChangedCallback((s) => { DisplayPreview(Preview_text_Vert_process); });
     Preview_text_Frag_process = EditorContent_Elements.Q <TextField>("Preview-text_Frag-process");
     Preview_text_Frag_process.RegisterValueChangedCallback((s) => { DisplayPreview(Preview_text_Frag_process); });
     Preview_text_Shader_Template = EditorContent_Elements.Q <TextField>("Preview-text_Shader-Template");
     Preview_text_Shader_Template.RegisterValueChangedCallback((s) => { DisplayPreview(Preview_text_Shader_Template); });
 }
예제 #3
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;
        }