Esempio n. 1
0
        public override void Deserialize(string key, string value)
        {
            switch (key)
            {
            case "flbk":
                fallback = value;
                break;

            case "cmtg":
                customTag = value;
                break;

            case "iptp":
                previewType = (Inspector3DPreviewType)int.Parse(value);
                break;

            case "cusa":
                canUseSpriteAtlas = bool.Parse(value);
                break;

            case "bamd":
                batchingMode = (BatchingMode)int.Parse(value);
                break;

            case "cgin":
                DeserializeCgIncludes(value);
                break;
            }
        }
Esempio n. 2
0
        public override float DrawInner(ref Rect r)
        {
            float prevYpos = r.y;

            r.y = 0;


            r.xMin += 20;
            r.y    += 20;


            EditorGUI.LabelField(r, "Path", EditorStyles.miniLabel);
            r.xMin  += 30;
            r.height = 17;
            r.xMax  -= 3;
            ps.StartIgnoreChangeCheck();
            GUI.SetNextControlName("shdrpath");
            string prev = editor.currentShaderPath;

            //editor.currentShaderPath = GUI.TextField( r, editor.currentShaderPath,EditorStyles.textField );
            editor.currentShaderPath = UndoableTextField(r, editor.currentShaderPath, "shader path", null, editor, showContent: false);
            if (editor.currentShaderPath != prev)
            {
                SF_Tools.FormatShaderPath(ref editor.currentShaderPath);
            }
            if (Event.current.keyCode == KeyCode.Return && GUI.GetNameOfFocusedControl() == "shdrpath")
            {
                editor.Defocus();
                editor.OnShaderModified(NodeUpdateType.Hard);
            }
            ps.EndIgnoreChangeCheck();
            r.xMin  -= 30;
            r.height = 20;
            r.xMax  += 3;
            r.y     += 20;



            EditorGUI.LabelField(r, "Fallback", EditorStyles.miniLabel);
            Rect rStart = new Rect(r);

            r.xMin  += 50;
            r.height = 17;
            r.xMax  -= 47;
            ps.StartIgnoreChangeCheck();
            GUI.SetNextControlName("shdrpath");
            prev     = fallback;
            fallback = UndoableTextField(r, fallback, "shader fallback", null, null, showContent: false);
            r.x     += r.width + 2;
            r.width  = 42;
            ShaderPicker(r, "Pick");
            if (fallback != prev)
            {
                SF_Tools.FormatShaderPath(ref fallback);
            }
            if (Event.current.keyCode == KeyCode.Return && GUI.GetNameOfFocusedControl() == "shdrpath")
            {
                editor.Defocus();
                editor.OnShaderModified(NodeUpdateType.Hard);
            }
            ps.EndIgnoreChangeCheck();
            r    = rStart;
            r.y += r.height;


            EditorGUI.LabelField(r, "LOD", EditorStyles.miniLabel);
            r.xMin  += 30;
            r.height = 17;
            r.xMax  -= 3;
            LOD      = UndoableIntField(r, LOD, "LOD");
            r.xMin  -= 30;
            r.height = 20;
            r.xMax  += 3;
            r.y     += 20;

            EditorGUI.LabelField(r, "Custom Tag", EditorStyles.miniLabel);
            r.xMin   += 80;
            r.height  = 17;
            r.xMax   -= 3;
            customTag = UndoableTextField(r, customTag, "CustomTag", null);
            r.xMin   -= 80;
            r.height  = 20;
            r.xMax   += 3;
            r.y      += 20;

            canUseSpriteAtlas = UndoableToggle(r, canUseSpriteAtlas, "Allow using atlased sprites", "allow using atlased sprites", null);
            r.y += 20;

            batchingMode = (BatchingMode)UndoableLabeledEnumPopupNamed(r, "Draw call batching", batchingMode, strBatchingMode, "draw call batching");
            r.y         += 20;

            previewType = (Inspector3DPreviewType)UndoableLabeledEnumPopupNamed(r, "Inspector preview mode", previewType, strInspector3DPreviewType, "inspector preview mode");
            r.y        += 20;

            r.y += 10;


            if (cgIncludes.Count == 0)
            {
                Rect rBtn = r;
                rBtn.height -= 4;
                rBtn.width   = 100;
                if (GUI.Button(rBtn, "Add CG Include", EditorStyles.miniButton))
                {
                    Undo.RecordObject(this, "add CG include");
                    cgIncludes.Add("");
                }
                //r.y += 20;
            }
            else
            {
                EditorGUI.LabelField(r, "CG Includes:");
                r.y += 20;


                int removeTarget = -1;

                for (int i = 0; i < cgIncludes.Count; i++)
                {
                    Rect smallRect = r;
                    smallRect.width   = 20;
                    smallRect.height -= 2;

                    if (GUI.Button(smallRect, "-"))
                    {
                        removeTarget = i;
                    }

                    r.xMin += 22;

                    Rect textFieldRect = r;
                    textFieldRect.height -= 2;
                    textFieldRect.width  -= 3;
                    cgIncludes[i]         = UndoableTextField(textFieldRect, cgIncludes[i], "cg include", null);
                    textFieldRect.x      += 1;
                    GUI.color             = new Color(1f, 1f, 1f, 0.3f);
                    GUI.Label(textFieldRect, "<color=#00000000>" + cgIncludes[i] + "</color>.cginc", SF_Styles.RichLabel);
                    GUI.color = Color.white;
                    r.y      += 20;

                    r.xMin -= 22;
                }

                if (removeTarget != -1)
                {
                    Undo.RecordObject(this, "remove CG include");
                    cgIncludes.RemoveAt(removeTarget);
                }

                Rect buttonRect = r;
                buttonRect.width   = 20;
                buttonRect.height -= 2;
                if (GUI.Button(buttonRect, "+"))
                {
                    Undo.RecordObject(this, "add CG include");
                    cgIncludes.Add("");
                }
            }



            r.y += 40;



            EditorGUI.LabelField(r, "Target renderers:");
            r.xMin  += 20;
            r.y     += 20;
            r.height = 17;
            float pWidth = r.width;


            bool onlyDX11GlCore = ps.mOut.tessellation.IsConnectedAndEnabled();


            for (int i = 0; i < usedRenderers.Length; i++)
            {
                bool isDX11orGlCore = (i == (int)RenderPlatform.d3d11) || i == (int)RenderPlatform.glcore;

                r.width = 20;

                bool prevEnable = GUI.enabled;
                //bool displayBool = usedRenderers[i];

                bool shouldDisable = !isDX11orGlCore && onlyDX11GlCore;

                if (shouldDisable)
                {
                    GUI.enabled = false;
                    EditorGUI.Toggle(r, false);
                }
                else
                {
                    usedRenderers[i] = UndoableToggle(r, usedRenderers[i], SF_Tools.rendererLabels[i] + " renderer");
                    //usedRenderers[i] = EditorGUI.Toggle( r, usedRenderers[i] );
                }


                r.width = pWidth;
                r.xMin += 20;
                EditorGUI.LabelField(r, SF_Tools.rendererLabels[i], EditorStyles.miniLabel);

                if (shouldDisable)
                {
                    GUI.enabled = prevEnable;
                }

                r.xMin -= 20;
                r.y    += r.height + 1;
            }

            r.y += prevYpos;

            return((int)r.yMax);
        }
Esempio n. 3
0
        //====================================================================================================
        public override float DrawInner(ref Rect r)
        {
            EditorGUI.BeginChangeCheck();

            float prevYpos = r.y;

            r.y = 0;


            r.xMin += 20;                                                   // GUI Content Left move 20 pixels
            r.y    += 20;                                                   // GUI Content Move Down 20 pixels

            string prevShaderPath = VS_Editor.instance.currentShaderPath;

            //------------------------------------------------------------------------------------------------------
            //Draw Path GUI
            //------------------------------------------------------------------------------------------------------
            {
                EditorGUI.LabelField(r, "Path", EditorStyles.miniLabel);        //Label

                r.xMin  += 27;                                                  // GUI Content Left move 30 pixels
                r.height = 17;                                                  // Restrict height

                //What this doing???
                VVS_PassSettings.Instance.StartIgnoreChangeCheck();

                GUI.SetNextControlName("shdrpath");

                VS_Editor.instance.currentShaderPath = UndoableTextField(r, VS_Editor.instance.currentShaderPath, "shader path", null, VS_Editor.instance, showContent: false);

                if (VS_Editor.instance.currentShaderPath != prevShaderPath)
                {
                    VS_Tools.FormatShaderPath(ref VS_Editor.instance.currentShaderPath);
                }

                if (Event.current.keyCode == KeyCode.Return && GUI.GetNameOfFocusedControl() == "shdrpath")
                {
                    VS_Editor.instance.Defocus();
                    VS_Editor.instance.OnShaderModified();
                }

                VVS_PassSettings.Instance.EndIgnoreChangeCheck();
            }


            //------------------------------------------------------------------------------------------------------
            //Draw Fallback GUI
            //------------------------------------------------------------------------------------------------------


            r.xMin  -= 27;
            r.height = 20;
            r.xMax  += 3;
            r.y     += 20;


            EditorGUI.LabelField(r, "Fallback", EditorStyles.miniLabel);
            Rect rStart = new Rect(r);

            r.xMin  += 50;
            r.height = 17;
            r.xMax  -= 47;
            VVS_PassSettings.Instance.StartIgnoreChangeCheck();
            GUI.SetNextControlName("shdrpath");
            prevShaderPath = fallback;
            fallback       = UndoableTextField(r, fallback, "shader fallback", null, null, showContent: false);
            r.x           += r.width + 2;
            r.width        = 42;
            ShaderPicker(r, "Pick");
            if (fallback != prevShaderPath)
            {
                VS_Tools.FormatShaderPath(ref fallback);
            }
            if (Event.current.keyCode == KeyCode.Return && GUI.GetNameOfFocusedControl() == "shdrpath")
            {
                VS_Editor.instance.Defocus();
                VS_Editor.instance.OnShaderModified();
            }
            VVS_PassSettings.Instance.EndIgnoreChangeCheck();


            //------------------------------------------------------------------------------------------------------
            //Draw LOD GUI
            //------------------------------------------------------------------------------------------------------

            r    = rStart;
            r.y += r.height;


            EditorGUI.LabelField(r, "LOD", EditorStyles.miniLabel);
            r.xMin  += 30;
            r.height = 17;
            r.xMax  -= 3;
            LOD      = UndoableIntField(r, LOD, "LOD");
            r.xMin  -= 30;
            r.height = 20;
            r.xMax  += 3;
            r.y     += 20;

            //------------------------------------------------------------------------------------------------------
            //Draw Atlased Option
            //------------------------------------------------------------------------------------------------------

            canUseSpriteAtlas = UndoableToggle(r, canUseSpriteAtlas, "Allow using atlased sprites", "allow using atlased sprites", null);
            r.y += 20;

            //------------------------------------------------------------------------------------------------------
            //Draw Call Batching Option
            //------------------------------------------------------------------------------------------------------

            batchingMode = (BatchingMode)UndoableLabeledEnumPopupNamed(r, "Draw call batching", batchingMode, strBatchingMode, "draw call batching");
            r.y         += 20;

            //------------------------------------------------------------------------------------------------------
            //Prewview Mode Options
            //------------------------------------------------------------------------------------------------------

            previewType = (Inspector3DPreviewType)UndoableLabeledEnumPopupNamed(r, "Inspector preview mode", previewType, strInspector3DPreviewType, "inspector preview mode");
            r.y        += 20;

            r.y += 10;

            //------------------------------------------------------------------------------------------------------
            //CG include Option
            //------------------------------------------------------------------------------------------------------

            if (cgIncludes.Count == 0)
            {
                Rect rBtn = r;
                rBtn.height -= 4;
                rBtn.width   = 100;
                if (GUI.Button(rBtn, "Add CG Include", EditorStyles.miniButton))
                {
                    Undo.RecordObject(this, "add CG include");
                    cgIncludes.Add("");
                }
                //r.y += 20;
            }
            else
            {
                EditorGUI.LabelField(r, "CG Includes:");
                r.y += 20;


                int removeTarget = -1;

                for (int i = 0; i < cgIncludes.Count; i++)
                {
                    Rect smallRect = r;
                    smallRect.width   = 20;
                    smallRect.height -= 2;

                    if (GUI.Button(smallRect, "-"))
                    {
                        removeTarget = i;
                    }

                    r.xMin += 22;

                    Rect textFieldRect = r;
                    textFieldRect.height -= 2;
                    textFieldRect.width  -= 3;
                    cgIncludes[i]         = UndoableTextField(textFieldRect, cgIncludes[i], "cg include", null);
                    textFieldRect.x      += 1;
                    GUI.color             = new Color(1f, 1f, 1f, 0.3f);
                    GUI.Label(textFieldRect, "<color=#00000000>" + cgIncludes[i] + "</color>.cginc", VS_Styles.RichLabel);
                    GUI.color = Color.white;
                    r.y      += 20;

                    r.xMin -= 22;
                }

                if (removeTarget != -1)
                {
                    Undo.RecordObject(this, "remove CG include");
                    cgIncludes.RemoveAt(removeTarget);
                }

                Rect buttonRect = r;
                buttonRect.width   = 20;
                buttonRect.height -= 2;
                if (GUI.Button(buttonRect, "+"))
                {
                    Undo.RecordObject(this, "add CG include");
                    cgIncludes.Add("");
                }
            }


            //------------------------------------------------------------------------------------------------------
            //Render Platform Option
            //------------------------------------------------------------------------------------------------------


            r.y += 40;



            EditorGUI.LabelField(r, "Target renderers:");
            r.xMin  += 20;
            r.y     += 20;
            r.height = 17;
            float pWidth = r.width;


            bool onlyDX11GlCore = false;//ps.mOut.tessellation.IsConnectedAndEnabled();


            for (int i = 0; i < usedRenderers.Length; i++)
            {
                bool isDX11orGlCore = (i == (int)RenderPlatform.d3d11) || i == (int)RenderPlatform.glcore;

                r.width = 20;

                bool prevEnable = GUI.enabled;
                //bool displayBool = usedRenderers[i];

                bool shouldDisable = !isDX11orGlCore && onlyDX11GlCore;

                if (shouldDisable)
                {
                    GUI.enabled = false;
                    EditorGUI.Toggle(r, false);
                }
                else
                {
                    usedRenderers[i] = UndoableToggle(r, usedRenderers[i], VS_Tools.rendererLabels[i] + " renderer");
                    //usedRenderers[i] = EditorGUI.Toggle( r, usedRenderers[i] );
                }


                r.width = pWidth;
                r.xMin += 20;
                EditorGUI.LabelField(r, VS_Tools.rendererLabels[i], EditorStyles.miniLabel);

                if (shouldDisable)
                {
                    GUI.enabled = prevEnable;
                }

                r.xMin -= 20;
                r.y    += r.height + 1;
            }



            if (EditorGUI.EndChangeCheck())
            {
                //Send A Message of Change
            }

            r.y += prevYpos;
            return((int)r.yMax);
        }