コード例 #1
0
ファイル: VolFogSettings.cpp プロジェクト: ldh9451/XLE
    void    VolumetricFogSettings::Render(  IOverlayContext* context, Layout& layout, 
                                            Interactables& interactables, InterfaceState& interfaceState)
    {
        using namespace RenderOverlays::DebuggingDisplay;
        layout.AllocateFullWidth(64);

        class ScrollBarObj
        {
        public:
            float *_member;
            const char* _name;
            float _min, _max;
        };

        ScrollBarObj objects[dimof(VolumetricFogSettings::_scrollers)] = 
        {
            { &_materialSettings->_density,             "Density",              0.f,   1.f },
            { &_materialSettings->_noiseDensityScale,   "NoiseDensityScale",    0.f,   1.f },
            { &_materialSettings->_noiseSpeed,          "NoiseSpeed",           0.001f,   10.f },
            // { &_materialSettings->_heightStart,         "HeightStart",          0.f,   300.f },
            // { &_materialSettings->_heightEnd,           "HeightEnd",            0.f,   300.f },

            { &_materialSettings->_forwardColour[0],    "ForwardR",             0.f,   1.f },
            { &_materialSettings->_forwardColour[1],    "ForwardG",             0.f,   1.f },
            { &_materialSettings->_forwardColour[2],    "ForwardB",             0.f,   1.f },
            // { &_materialSettings->_forwardBrightness,   "ForwardBrightness",    0.f,   50.f },

            { &_materialSettings->_backColour[0],       "BackR",                0.f,   1.f },
            { &_materialSettings->_backColour[1],       "BackG",                0.f,   1.f },
            { &_materialSettings->_backColour[2],       "BackB",                0.f,   1.f },
            // { &_materialSettings->_backBrightness,      "BackBrightness",       0.f,   50.f },

            { &_materialSettings->_ESM_C,               "ESM_C",                0.f,   150.f },
            { &_materialSettings->_jitteringAmount,     "JitteringAmount",      0.f,   1.f }
        };

        const auto scrollBarId = InteractableId_Make("ScrollBar");
        for (unsigned q=0; q<dimof(objects); ++q) {
            static Coord2 scrollBarSize(600, 24);
            Rect windAngle0 = layout.Allocate(scrollBarSize);

            Rect gridBackgroundRect = windAngle0;
            gridBackgroundRect._topLeft[0] += 128; gridBackgroundRect._bottomRight[0] -= 4;
            gridBackgroundRect._topLeft[1] += 4; gridBackgroundRect._bottomRight[1] -= 4;
            HScrollBar_DrawGridBackground(context, gridBackgroundRect);
            
            Rect labelRect = windAngle0;
            labelRect._bottomRight[0] = labelRect._topLeft[0] + 256;
            HScrollBar_DrawLabel(context, labelRect);
            
            Rect textRect = windAngle0;
            textRect._topLeft[0] += 32;
            /*Coord a = */DrawFormatText(context, textRect, nullptr, ColorB(0xffffffff), objects[q]._name);

            Rect scrollBar = windAngle0;
            scrollBar._topLeft[0] = labelRect._bottomRight[0];
            scrollBar._topLeft[0] += 16;
            scrollBar._bottomRight[0] -= 16;

            ScrollBar::Coordinates scrollCoordinates(
                scrollBar, objects[q]._min, objects[q]._max, (objects[q]._max - objects[q]._min)/40.f,
                ScrollBar::Coordinates::Flags::NoUpDown|ScrollBar::Coordinates::Flags::Horizontal);
            *objects[q]._member = _scrollers[q].CalculateCurrentOffset(scrollCoordinates, *objects[q]._member);
            HScrollBar_Draw(context, scrollCoordinates, *objects[q]._member);
            interactables.Register(
                Interactables::Widget(scrollCoordinates.InteractableRect(), scrollBarId+q));

            DrawFormatText(context, scrollBar, 0.f, nullptr, ColorB(0xffffffff), TextAlignment::Right, "%.3f", *objects[q]._member);
        }
    }
コード例 #2
0
    void    TestMaterialSettings::Render(   IOverlayContext* context, Layout& layout, 
                                            Interactables& interactables, InterfaceState& interfaceState)
    {
        using namespace RenderOverlays::DebuggingDisplay;
        layout.AllocateFullWidth(64);

        class ScrollBarObj
        {
        public:
            float *_member;
            const char* _name;
            float _min, _max;
        };

        ScrollBarObj objects[dimof(TestMaterialSettings::_scrollers)] = 
        {
            { &_materialSettings->_metallic,            "Metallic",         0.f,   1.f },
            { &_materialSettings->_roughness,           "Roughness",        0.f,   1.f },
            { &_materialSettings->_specular,            "Specular",         0.f,   1.f },
            { &_materialSettings->_specular2,           "Specular2",        0.f,   1.f },
            { &_materialSettings->_material,            "Material",         0.f,   1.f },
            { &_materialSettings->_material2,           "Material2",        0.f,   1.f },

            { &_materialSettings->_diffuseScale,        "DiffuseScale",     0.f,   4.f },
            { &_materialSettings->_reflectionsScale,    "ReflectionsScale", 0.f,   4.f },
            { &_materialSettings->_reflectionsBoost,    "ReflectionsBoost", 0.f,   1.f },
            { &_materialSettings->_specular0Scale,      "Specular0Scale",   0.f,   4.f },
            { &_materialSettings->_specular1Scale,      "Specular1Scale",   0.f,   4.f }
        };

        const auto scrollBarId = InteractableId_Make("ScrollBar");
        for (unsigned q=0; q<dimof(objects); ++q) {
            Rect windAngle0 = layout.AllocateFullWidth(32);

            Rect gridBackgroundRect = windAngle0;
            gridBackgroundRect._topLeft[0] += 128; gridBackgroundRect._bottomRight[0] -= 4;
            gridBackgroundRect._topLeft[1] += 4; gridBackgroundRect._bottomRight[1] -= 4;
            HScrollBar_DrawGridBackground(context, gridBackgroundRect);
            
            Rect labelRect = windAngle0;
            labelRect._bottomRight[0] = labelRect._topLeft[0] + 256;
            HScrollBar_DrawLabel(context, labelRect);
            
            Rect textRect = windAngle0;
            textRect._topLeft[0] += 32;
            /*Coord a = */DrawFormatText(context, textRect, nullptr, ColorB(0xffffffff), objects[q]._name);

            Rect scrollBar = windAngle0;
            scrollBar._topLeft[0] = labelRect._bottomRight[0];
            scrollBar._topLeft[0] += 16;
            scrollBar._bottomRight[0] -= 16;

            ScrollBar::Coordinates scrollCoordinates(scrollBar, objects[q]._min, objects[q]._max, (objects[q]._max - objects[q]._min)/40.f,
                ScrollBar::Coordinates::Flags::NoUpDown|ScrollBar::Coordinates::Flags::Horizontal);
            *objects[q]._member = _scrollers[q].CalculateCurrentOffset(scrollCoordinates, *objects[q]._member);
            HScrollBar_Draw(context, scrollCoordinates, *objects[q]._member);
            interactables.Register(
                Interactables::Widget(scrollCoordinates.InteractableRect(), scrollBarId+q));

            DrawFormatText(context, scrollBar, 0.f, nullptr, ColorB(0xffffffff), TextAlignment::Right, "%.3f", *objects[q]._member);
        }
    }