Skip to content

File DefultViewports.cpp

File List > src > UI > DefultViewports.cpp

Go to the documentation of this file

#include "ImguiManager.h"
#include "macros.h"

#include "menu/ImguiMButton.h"
#include "menu/ImguiMOption.h"
#include "menu/ImguiMSwitch.h"

#include "layer/Viewport.h"
#include "layer/Outliner.h"
#include "layer/ParamControl.h"
#include "layer/ShaderEditor.h"
#include "layer/MaterialViewer.h"
#include "layer/TransformPanel.h"
#include "layer/RenderConfigViewer.h"

#include "item/ParaInput.h"
#include "item/TextureViewer.h"
#include "item/Text.h"
#include "item/Button.h"
#include "item/OpaButton.h"

#include "events/KeyMouseEvents.h"

void ImguiManager::DefultViewports() {


    auto menu1 = CreateImguiMenu("File");
    menu1->PushSubMenu<UI::ImguiMButton>("test", "ctrl + A");
    menu1->PushSubMenu<UI::ImguiMButton>("test2", "ctrl + S");

    auto menu2 = CreateImguiMenu("Edit");
    menu2->PushSubMenu<UI::ImguiMButton>("undo", "ctrl + Z");
    menu2->PushSubMenu<UI::ImguiMButton>("redo", "ctrl + Y");
    menu2->PushSubMenu<UI::ImguiMButton>("preference", "ctrl + P");

    auto menu3 = CreateImguiMenu("Window");

    auto menu4 = CreateImguiMenu("View");
    menu4->PushSubMenu<UI::ImguiMSwitch>("Axis");
    menu4->PushSubMenu<UI::ImguiMSwitch>("Grid");
    menu4->PushSubMenu<UI::ImguiMSwitch>("Transform");
    menu4->PushSubMenu<UI::ImguiMSwitch>("Icons");
    menu4->PushSubMenu<UI::ImguiMOption>("Render Result", OPTIONS("Combine", "Position", "Normal", "MRSE", "Random", "AO"));

    auto menu5 = CreateImguiMenu("Render");
    menu5->PushSubMenu<UI::ImguiMOption>("Rendering PipeLine", OPTIONS("Forward", "Deferred", "Custom (future)"));
    menu5->PushSubMenu<UI::ImguiMOption>("Sampling", OPTIONS("Average", "Increment Average"));
    menu5->PushSubMenu<UI::ImguiMOption>("Optical Flow", OPTIONS("None", "Forward", "Backward"));
    menu5->PushSubMenu<UI::ImguiMOption>("Anti Aliasing", OPTIONS("None", "MSAA (future)", "FXAA"));
    menu5->PushSubMenu<UI::ImguiMOption>("Screen Space Reflection", OPTIONS("None", "Ray Marching", "SDF Ray Marching", "SDF Resolved Ray Marching"));
    menu5->PushSubMenu<UI::ImguiMOption>("Shadow", OPTIONS("None", "Shadow Mapping", "SDF Soft Shadow", "Variance Soft Shadow", "Moment Soft Shadow"));
    menu5->PushSubMenu<UI::ImguiMOption>("Ambient Occlusion", OPTIONS("None", "SSAO", "HBAO (future)"));

    auto layer1 = CreateImguiLayer<ParamControl>("test layer");
    layer1->PushItem<UI::ParaInput>(FLOAT_INP, "testf", 0.0f, 1.0f);
    layer1->PushItem<UI::ParaInput>(FLOAT_INP, "Metalness", 0.0f, 1.0f);
    layer1->PushItem<UI::ParaInput>(FLOAT_INP, "Roughness", 0.0f, 1.0f);
    layer1->PushItem<UI::ParaInput>(FLOAT_INP, "Specular", 0.0f, 1.0f, 1.0f);
    layer1->PushItem<UI::ParaInput>(INT_INP, "test");
    layer1->PushItem<UI::ParaInput>(BOOL_INP, "test");
    layer1->PushItem<UI::ParaInput>(RGB_INP, "test");
    layer1->PushItem<UI::Button>("testB");
    layer1->PushItem<UI::Text>("test[%.1f]");
    FindImguiItem("test layer", "test[%.1f]")->SetArgsList(1, &GetParaValue("test layer", "testf")->Get<float>());
    layer1->uly_is_rendered = false;

    auto layer2 = CreateImguiLayer<ParamControl>("__Parameters__");
    layer2->PushItem<UI::Text>("Frame Rate %.3f ms/frame (%.1f FPS)");
    layer2->PushItem<UI::Text>("MOUSE_POS : [%.1f : %.1f]");
    layer2->PushItem<UI::ParaInput>(FLOAT_INP, "SCALE", 0.0f, 1.0f, 0.3f);
    layer2->PushItem<UI::ParaInput>(FLOAT_INP, "POWER", 0.0f, 1.0f, 0.5f);
    layer2->PushItem<UI::ParaInput>(FLOAT_INP, "X", -90.0f, 90.0f);
    layer2->PushItem<UI::ParaInput>(FLOAT_INP, "Y", -90.0f, 90.0f);
    layer2->PushItem<UI::ParaInput>(FLOAT_INP, "Z", -90.0f, 90.0f);
    layer2->PushItem<UI::ParaInput>(FLOAT_INP, "W", 0.0f, 10.0f);
    layer2->PushItem<UI::ParaInput>(FLOAT_INP, "GAMMA", 0.0f, 30.0f, 1.5f);
    layer2->PushItem<UI::ParaInput>(RGB_INP, "Light Color", glm::vec3{ 0.5,0.5,0.5 });
    layer2->PushItem<UI::ParaInput>(RGB_INP, "Light Position");
    layer2->PushItem<UI::ParaInput>(RGB_INP, "Light Rotation", glm::vec3{ 0.5,0.5,0.5 });
    layer2->PushItem<UI::Button>("Debug");

    auto render_config = CreateImguiLayer<RenderConfigViewer>("Renderer");

    auto viewport = CreateImguiLayer<Viewport>("Viewport");

    auto compshader_result = CreateImguiLayer<Viewport>("CompShader");
    compshader_result->uly_is_rendered = false;

    auto outline = CreateImguiLayer<Outliner>("Outliner");

    auto shaderedit = CreateImguiLayer<ShaderEditor>("Shader Editor");     //ShaderEditor must after Outliner since the order of "Input::is_selected_changed"

    auto material = CreateImguiLayer<MaterialViewer>("Material");

    auto transform = CreateImguiLayer<TransformPanel>("Transform");

    FindImguiMenuItem("View", "Axis")->BindSwitch(&viewport->display_axis);
    FindImguiMenuItem("View", "Grid")->BindSwitch(&viewport->display_grid);
    FindImguiMenuItem("View", "Transform")->BindSwitch(&viewport->display_trans_handle);

    ActivateLayer("Viewport");
}