Beispiel #1
0
        public void SortingBlock(ref Rect r)
        {
            ps.StartIgnoreChangeCheck();
            bool prevAutoSort = autoSort;

            GUI.enabled = ps.catLighting.renderPath == SFPSC_Lighting.RenderPath.Forward;
            autoSort    = UndoableToggle(r, autoSort, autoSort ? "自动排序..." : "自动排序", "auto sort", null);
            GUI.enabled = true;
            if (autoSort != prevAutoSort && autoSort)
            {
                UpdateAutoSettings();
            }
            ps.EndIgnoreChangeCheck();

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

            bool prevGUI = GUI.enabled;

            GUI.enabled = !autoSort;
            {
                int  wOrder  = SF_GUI.WidthOf("Order", EditorStyles.miniLabel) + 2;
                int  wPlus   = SF_GUI.WidthOf("+", EditorStyles.miniLabel) + 2;
                int  wOffset = 32;
                int  wEquals = SF_GUI.WidthOf("=", EditorStyles.miniLabel);
                int  wResult = 32;
                int  wField  = Mathf.FloorToInt(r.width - wOrder - wPlus - wEquals - wOffset - wResult);
                Rect tRect   = new Rect(r);
                tRect.width = wOrder;
                GUI.Label(tRect, new GUIContent("排序", "确定此着色器相对于其他渲染的顺序"), EditorStyles.miniLabel);
                SF_GUI.MoveRight(ref tRect, wField);
                //queuePreset = (Queue)EditorGUI.Popup(tRect, (int)queuePreset, strQueue );
                queuePreset = (Queue)UndoableEnumPopupNamed(tRect, queuePreset, strQueue, "render queue order");
                SF_GUI.MoveRight(ref tRect, wPlus);
                GUI.Label(tRect, "+");
                SF_GUI.MoveRight(ref tRect, wOffset);
                queueOffset = UndoableIntField(tRect, queueOffset, "render queue offset");
                SF_GUI.MoveRight(ref tRect, wEquals);
                GUI.Label(tRect, "=");
                SF_GUI.MoveRight(ref tRect, wResult);
                GUI.Label(tRect, (queueNumbers[(int)queuePreset] + queueOffset).ToString());
                r.y += 20;
                //renderType = (RenderType)SF_GUI.LabeledEnumField( r,new GUIContent("Render Type","Defines shader replacement; required for some rendering effects, such as SSAO"), renderType, EditorStyles.miniLabel );
                renderType = (RenderType)UndoableLabeledEnumPopupNamed(r, "渲染类型", renderType, strRenderType, "render type");
                r.y       += 20;
                //depthTest = (DepthTest)SF_GUI.LabeledEnumFieldNamed( r, strDepthTest, new GUIContent( "Depth Test", "Compared to the existing geometry in the scene, \nthis determines when to render this geometry. \u2264 is default, meaning:\n\"If this part is closer or as close to the camera as existing geometry, draw me!\"" ), (int)depthTest, EditorStyles.miniLabel );
                depthTest = (DepthTest)UndoableLabeledEnumPopupNamed(r, "深度测试", depthTest, strDepthTest, "depth test");
                r.y      += 20;
                //ignoreProjector = GUI.Toggle(r, ignoreProjector, "Ignore Projectors" );
                ignoreProjector = UndoableToggle(r, ignoreProjector, "忽略投影器", "ignore projectors", null);
                r.y            += 20;
                //writeDepth = GUI.Toggle( r, writeDepth, "Write to Depth buffer" );
                writeDepth = UndoableToggle(r, writeDepth, "写入深度缓冲区", "depth buffer write", null);
                r.y       += 20;
            }
            GUI.enabled = prevGUI;

            r.xMin -= 20;
        }