2
3
4
5
9#include "Render/FrameInfo.h"
10#include "World/World/World.h"
12#include "imgui_internal.h"
13#include <glm/gtc/type_ptr.hpp>
31 ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2{ 0, 3.0f });
32 float columeWidth = ImGuiH::GetLineItemSize().x * 6.5f;
37 ImGuiH::DrawPropertyItem(
"Color", columeWidth,
nullptr, [&]() {
39 float itemWidth = (ImGui::GetContentRegionAvail().x - 8.0f * ImGuiH::GetLineItemSize().x) / 3.0f;
43 ImGui::PushID(
"DirectionalLightComponent Color R");
45 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4{ 0.8f, 0.1f, 0.15f, 1.0f });
46 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4{ 0.9f, 0.2f, 0.2f, 1.0f });
47 ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4{ 0.8f, 0.1f, 0.15f, 1.0f });
48 if (ImGui::Button(
"R", ImGuiH::GetLineItemSize())) m_DirectionalLight.color.x = 1.0f;
49 ImGui::PopStyleColor(3);
51 ImGui::PushItemWidth(itemWidth);
52 if(ImGui::SliderFloat(
"##R", &m_DirectionalLight.color.x, 0.0f, 1.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
54 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
56 ImGui::PopItemWidth();
58 if (ImGuiH::DrawResetIcon(m_DirectionalLight.color.x != 1.0f))
60 m_DirectionalLight.color.x = 1.0f;
61 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
69 ImGui::PushID(
"DirectionalLightComponent Color G");
71 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4{ 0.2f, 0.7f, 0.2f, 1.0f });
72 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4{ 0.3f, 0.8f, 0.3f, 1.0f });
73 ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4{ 0.2f, 0.7f, 0.2f, 1.0f });
74 if (ImGui::Button(
"G", ImGuiH::GetLineItemSize())) m_DirectionalLight.color.y = 1.0f;
75 ImGui::PopStyleColor(3);
77 ImGui::PushItemWidth(itemWidth);
78 if(ImGui::SliderFloat(
"##G", &m_DirectionalLight.color.y, 0.0f, 1.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
80 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
82 ImGui::PopItemWidth();
84 if (ImGuiH::DrawResetIcon(m_DirectionalLight.color.y != 1.0f))
86 m_DirectionalLight.color.y = 1.0f;
87 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
95 ImGui::PushID(
"DirectionalLightComponent Color B");
97 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4{ 0.1f, 0.25f, 0.8f, 1.0f });
98 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4{ 0.2f, 0.35f, 0.9f, 1.0f });
99 ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4{ 0.1f, 0.25f, 0.8f, 1.0f });
100 if (ImGui::Button(
"B", ImGuiH::GetLineItemSize())) m_DirectionalLight.color.z = 1.0f;
101 ImGui::PopStyleColor(3);
103 ImGui::PushItemWidth(itemWidth);
104 if(ImGui::SliderFloat(
"##B", &m_DirectionalLight.color.z, 0.0f, 1.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
106 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
108 ImGui::PopItemWidth();
110 if (ImGuiH::DrawResetIcon(m_DirectionalLight.color.z != 1.0f))
112 m_DirectionalLight.color.z = 1.0f;
113 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
121 ImGui::PushID(
"DirectionalLightComponent Color Picker");
123 ImGui::PushStyleColor(ImGuiCol_FrameBg, ImGui::GetStyle().Colors[ImGuiCol_WindowBg]);
124 if(ImGui::ColorEdit3(
"##", glm::value_ptr(m_DirectionalLight.color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_PickerHueBar))
126 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
129 if (ImGuiH::DrawResetIcon(m_DirectionalLight.color != glm::vec3(1.0f, 1.0f, 1.0f)))
131 m_DirectionalLight.color = glm::vec3(1.0f, 1.0f, 1.0f);
132 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
134 ImGui::PopStyleColor();
143 ImGuiH::DrawPropertyItem(
"Intensity", columeWidth,
nullptr, [&]() {
144 ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x - ImGuiH::GetLineItemSize().x);
145 if(ImGui::DragFloat(
"##", &m_DirectionalLight.intensity, 0.1f, 0.0f, 10000.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
147 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
149 ImGui::PopItemWidth();
151 if (ImGuiH::DrawResetIcon(m_DirectionalLight.intensity != 1.0f))
153 m_DirectionalLight.intensity = 1.0f;
154 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
159 ImGui::PopStyleVar();
#define SPICES_PROFILE_ZONEN(...)
#define SPICES_PROFILE_ZONE
virtual void DrawThis() override
This interface defines how to draw this component to property panel.
virtual void OnSerialize() override
This interface defines how to serialize.
virtual void OnDeSerialize() override
This interface defines how to deserialize.
DirectionalLightComponent Class. This class defines the specific behaves of DirectionalLightComponent...