From ed6fdbdb5b51cf3bf272f07a11b3e1ab6244b015 Mon Sep 17 00:00:00 2001 From: Joey Pollack Date: Mon, 11 Jul 2022 14:44:50 -0400 Subject: [PATCH] Removed style selection Set charcoal to default style Tweeked styles --- src/gui/imgui_ext.cpp | 87 ++++++++++++++++++ src/gui/imgui_ext.h | 2 + src/run_modes/editor/component_guis.cpp | 14 +-- src/run_modes/editor/editor.cpp | 113 ++++++++++++------------ 4 files changed, 155 insertions(+), 61 deletions(-) diff --git a/src/gui/imgui_ext.cpp b/src/gui/imgui_ext.cpp index 9bbe9e7..fe5bb78 100644 --- a/src/gui/imgui_ext.cpp +++ b/src/gui/imgui_ext.cpp @@ -77,6 +77,93 @@ namespace lunarium ImGui::PopID(); } + + + void ImGuiExt::Vec2Control(const std::string& label, glm::vec3& values, float resetValue, float columnWidth) + { + ImGui::PushID(label.c_str()); + + ImGui::Columns(2); + ImGui::SetColumnWidth(0, columnWidth); + ImGui::Text(label.c_str()); + ImGui::NextColumn(); + + ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth()); + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2{ 0, 0 }); + + float lineHeight = GImGui->Font->FontSize + GImGui->Style.FramePadding.y * 2.0f; + ImVec2 buttonSize = { lineHeight + 3.0f, lineHeight }; + + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4{ 0.8f, 0.1f, 0.15f, 1.0f }); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4{ 0.9f, 0.2f, 0.2f, 1.0f }); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4{ 0.8f, 0.1f, 0.15f, 1.0f }); + //ImGui::PushFont(boldFont); + if (ImGui::Button("X", buttonSize)) + values.x = resetValue; + //ImGui::PopFont(); + ImGui::PopStyleColor(3); + + ImGui::SameLine(); + ImGui::DragFloat("##X", &values.x, 0.1f, 0.0f, 0.0f, "%.2f"); + ImGui::PopItemWidth(); + ImGui::SameLine(); + + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4{ 0.2f, 0.7f, 0.2f, 1.0f }); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4{ 0.3f, 0.8f, 0.3f, 1.0f }); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4{ 0.2f, 0.7f, 0.2f, 1.0f }); + //ImGui::PushFont(boldFont); + if (ImGui::Button("Y", buttonSize)) + values.y = resetValue; + //ImGui::PopFont(); + ImGui::PopStyleColor(3); + + ImGui::SameLine(); + ImGui::DragFloat("##Y", &values.y, 0.1f, 0.0f, 0.0f, "%.2f"); + ImGui::PopItemWidth(); + + ImGui::PopStyleVar(); + + ImGui::Columns(1); + + ImGui::PopID(); + } + + + void ImGuiExt::FloatControl(const std::string& label, float& value, float resetValue, float columnWidth) + { + ImGui::PushID(label.c_str()); + + ImGui::Columns(2); + ImGui::SetColumnWidth(0, columnWidth); + ImGui::Text(label.c_str()); + ImGui::NextColumn(); + + ImGui::PushMultiItemsWidths(3, ImGui::CalcItemWidth()); + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2{ 0, 0 }); + + float lineHeight = GImGui->Font->FontSize + GImGui->Style.FramePadding.y * 2.0f; + ImVec2 buttonSize = { lineHeight + 3.0f, lineHeight }; + + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4{ 0.8f, 0.1f, 0.15f, 1.0f }); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4{ 0.9f, 0.2f, 0.2f, 1.0f }); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4{ 0.8f, 0.1f, 0.15f, 1.0f }); + //ImGui::PushFont(boldFont); + if (ImGui::Button("R", buttonSize)) + value = resetValue; + //ImGui::PopFont(); + ImGui::PopStyleColor(3); + + ImGui::SameLine(); + ImGui::DragFloat("##X", &value, 0.1f, 0.0f, 0.0f, "%.2f"); + ImGui::PopItemWidth(); + + + ImGui::PopStyleVar(); + + ImGui::Columns(1); + + ImGui::PopID(); + } /// Only works if this is the only item on the line void ImGuiExt::TextCentered(const std::string text) diff --git a/src/gui/imgui_ext.h b/src/gui/imgui_ext.h index 3dab4bb..bc3a1e8 100644 --- a/src/gui/imgui_ext.h +++ b/src/gui/imgui_ext.h @@ -22,6 +22,8 @@ namespace lunarium /// This function was taken from the Hazel engine written by Cherno! /// https://github.com/TheCherno/Hazel/blob/master/Hazelnut/src/Panels/SceneHierarchyPanel.cpp static void Vec3Control(const std::string& label, glm::vec3& values, float resetValue = 0.0f, float columnWidth = 100.0f); + static void Vec2Control(const std::string& label, glm::vec3& values, float resetValue = 0.0f, float columnWidth = 100.0f); + static void FloatControl(const std::string& label, float& values, float resetValue = 0.0f, float columnWidth = 100.0f); static void TextCentered(const std::string text); static bool ButtonCentered(const char* label, float alignment = 0.5f); }; diff --git a/src/run_modes/editor/component_guis.cpp b/src/run_modes/editor/component_guis.cpp index 2516d31..43d4849 100644 --- a/src/run_modes/editor/component_guis.cpp +++ b/src/run_modes/editor/component_guis.cpp @@ -22,7 +22,8 @@ namespace lunarium { namespace editor { ImVec2 top_left(ImGui::GetWindowPos().x, ImGui::GetCursorScreenPos().y - ImGui::GetStyle().FramePadding.y); ImVec2 bot_right(top_left.x + ImGui::GetWindowSize().x, ImGui::GetCursorScreenPos().y + ImGui::GetFrameHeight()); - ImU32 color = ImGui::ColorConvertFloat4ToU32(ImVec4(0.1f, 0.3f, 0.8f, 1.0f)); + //ImU32 color = ImGui::ColorConvertFloat4ToU32(ImVec4(0.1f, 0.3f, 0.8f, 1.0f)); + ImU32 color = ImGui::ColorConvertFloat4ToU32(ImVec4(0.3f, 0.3f, 0.3f, 1.0f)); ImGui::GetWindowDrawList()->AddRectFilled(top_left, bot_right, color); ImGuiExt::TextCentered(title.c_str()); } @@ -47,12 +48,15 @@ namespace lunarium { namespace editor /// https://github.com/TheCherno/Hazel/blob/master/Hazelnut/src/Panels/SceneHierarchyPanel.cpp void CompGui::RenderTransformComp(TransformComponent& comp) { - DrawTitle("Tag Component"); + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(ImGui::GetStyle().ItemSpacing.x, ImGui::GetStyle().ItemSpacing.y + 10.0f)); + DrawTitle("Transform Component"); + ImGui::PopStyleVar(); - ImGuiExt::Vec3Control("Translation", comp.Position, 0.0f, 85.0f); + ImGuiExt::Vec2Control("Translation", comp.Position, 0.0f, 85.0f); glm::vec3 rotation = glm::degrees(comp.Rotation); - ImGuiExt::Vec3Control("Rotation", rotation, 0.0f, 85.0f); + //ImGuiExt::Vec3Control("Rotation", rotation, 0.0f, 85.0f); + ImGuiExt::FloatControl("Rotation", rotation.z, 0.0f, 85.0f); comp.Rotation = glm::radians(rotation); - ImGuiExt::Vec3Control("Scale", comp.Scale, 1.0f, 85.0f); + ImGuiExt::Vec2Control("Scale", comp.Scale, 1.0f, 85.0f); } }} \ No newline at end of file diff --git a/src/run_modes/editor/editor.cpp b/src/run_modes/editor/editor.cpp index b4f0241..41721c0 100644 --- a/src/run_modes/editor/editor.cpp +++ b/src/run_modes/editor/editor.cpp @@ -58,6 +58,7 @@ namespace editor DataManager::Initialize(); ImGui::GetIO().ConfigWindowsMoveFromTitleBarOnly = true; + GUI::GetInstance().SetStyle(GuiStyle::STYLE_CHARCOAL); // Init editor panels mAboutPanel.SetOpen(false); @@ -284,62 +285,62 @@ namespace editor if (ImGui::BeginMenu("View")) { - if (ImGui::BeginMenu("Styles")) - { - if (ImGui::MenuItem("Classic")) - { - GUI::GetInstance().SetStyle(GuiStyle::STYLE_DEFAULT_CLASSIC); - } - - if (ImGui::MenuItem("Default Dark")) - { - GUI::GetInstance().SetStyle(GuiStyle::STYLE_DEFAULT_DARK); - } - - if (ImGui::MenuItem("Default Light")) - { - GUI::GetInstance().SetStyle(GuiStyle::STYLE_DEFAULT_LIGHT); - } - - ImGui::Separator(); - - if (ImGui::MenuItem("Deep Dark")) - { - GUI::GetInstance().SetStyle(GuiStyle::STYLE_DEEP_DARK); - } - - if (ImGui::MenuItem("Red Dark")) - { - GUI::GetInstance().SetStyle(GuiStyle::STYLE_RED_DARK); - } - - if (ImGui::MenuItem("Green Blue")) - { - GUI::GetInstance().SetStyle(GuiStyle::STYLE_GREEN_BLUE); - } - - if (ImGui::MenuItem("OverShifted Dark")) - { - GUI::GetInstance().SetStyle(GuiStyle::STYLE_OVERSHIFTED_DARK); - } - - if (ImGui::MenuItem("Charcoal")) - { - GUI::GetInstance().SetStyle(GuiStyle::STYLE_CHARCOAL); - } - - if (ImGui::MenuItem("Corporate Gray")) - { - GUI::GetInstance().SetStyle(GuiStyle::STYLE_CORPORATE_GRAY); - } - - if (ImGui::MenuItem("Corporate Gray 3D")) - { - GUI::GetInstance().SetStyle(GuiStyle::STYLE_CORPORATE_GRAY_3D); - } - - ImGui::EndMenu(); - } + // if (ImGui::BeginMenu("Styles")) + // { + // if (ImGui::MenuItem("Classic")) + // { + // GUI::GetInstance().SetStyle(GuiStyle::STYLE_DEFAULT_CLASSIC); + // } + + // if (ImGui::MenuItem("Default Dark")) + // { + // GUI::GetInstance().SetStyle(GuiStyle::STYLE_DEFAULT_DARK); + // } + + // if (ImGui::MenuItem("Default Light")) + // { + // GUI::GetInstance().SetStyle(GuiStyle::STYLE_DEFAULT_LIGHT); + // } + + // ImGui::Separator(); + + // if (ImGui::MenuItem("Deep Dark")) + // { + // GUI::GetInstance().SetStyle(GuiStyle::STYLE_DEEP_DARK); + // } + + // if (ImGui::MenuItem("Red Dark")) + // { + // GUI::GetInstance().SetStyle(GuiStyle::STYLE_RED_DARK); + // } + + // if (ImGui::MenuItem("Green Blue")) + // { + // GUI::GetInstance().SetStyle(GuiStyle::STYLE_GREEN_BLUE); + // } + + // if (ImGui::MenuItem("OverShifted Dark")) + // { + // GUI::GetInstance().SetStyle(GuiStyle::STYLE_OVERSHIFTED_DARK); + // } + + // if (ImGui::MenuItem("Charcoal")) + // { + // GUI::GetInstance().SetStyle(GuiStyle::STYLE_CHARCOAL); + // } + + // if (ImGui::MenuItem("Corporate Gray")) + // { + // GUI::GetInstance().SetStyle(GuiStyle::STYLE_CORPORATE_GRAY); + // } + + // if (ImGui::MenuItem("Corporate Gray 3D")) + // { + // GUI::GetInstance().SetStyle(GuiStyle::STYLE_CORPORATE_GRAY_3D); + // } + + // ImGui::EndMenu(); + // } ImGui::EndMenu(); }