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>
30 ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2{ 0, 3.0f });
31 float columeWidth = ImGuiH::GetLineItemSize().x * 6.5f;
36 ImGuiH::DrawPropertyItem(
"Color", columeWidth,
nullptr, [&]() {
38 float itemWidth = (ImGui::GetContentRegionAvail().x - 8.0f * ImGuiH::GetLineItemSize().x) / 3.0f;
42 ImGui::PushID(
"PointLightComponent Color R");
44 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4{ 0.8f, 0.1f, 0.15f, 1.0f });
45 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4{ 0.9f, 0.2f, 0.2f, 1.0f });
46 ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4{ 0.8f, 0.1f, 0.15f, 1.0f });
47 if (ImGui::Button(
"R", ImGuiH::GetLineItemSize())) m_PointLight.color.x = 1.0f;
48 ImGui::PopStyleColor(3);
50 ImGui::PushItemWidth(itemWidth);
51 if(ImGui::SliderFloat(
"##R", &m_PointLight.color.x, 0.0f, 1.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
53 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
55 ImGui::PopItemWidth();
57 if (ImGuiH::DrawResetIcon(m_PointLight.color.x != 1.0f))
59 m_PointLight.color.x = 1.0f;
60 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
68 ImGui::PushID(
"PointLightComponent Color G");
70 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4{ 0.2f, 0.7f, 0.2f, 1.0f });
71 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4{ 0.3f, 0.8f, 0.3f, 1.0f });
72 ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4{ 0.2f, 0.7f, 0.2f, 1.0f });
73 if (ImGui::Button(
"G", ImGuiH::GetLineItemSize())) m_PointLight.color.y = 1.0f;
74 ImGui::PopStyleColor(3);
76 ImGui::PushItemWidth(itemWidth);
77 if(ImGui::SliderFloat(
"##G", &m_PointLight.color.y, 0.0f, 1.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
79 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
81 ImGui::PopItemWidth();
83 if (ImGuiH::DrawResetIcon(m_PointLight.color.y != 1.0f))
85 m_PointLight.color.y = 1.0f;
86 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
94 ImGui::PushID(
"PointLightComponent Color B");
96 ImGui::PushStyleColor(ImGuiCol_Button, ImVec4{ 0.1f, 0.25f, 0.8f, 1.0f });
97 ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4{ 0.2f, 0.35f, 0.9f, 1.0f });
98 ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4{ 0.1f, 0.25f, 0.8f, 1.0f });
99 if (ImGui::Button(
"B", ImGuiH::GetLineItemSize())) m_PointLight.color.z = 1.0f;
100 ImGui::PopStyleColor(3);
102 ImGui::PushItemWidth(itemWidth);
103 if(ImGui::SliderFloat(
"##B", &m_PointLight.color.z, 0.0f, 1.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
105 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
107 ImGui::PopItemWidth();
109 if (ImGuiH::DrawResetIcon(m_PointLight.color.z != 1.0f))
111 m_PointLight.color.z = 1.0f;
112 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
120 ImGui::PushID(
"PointLightComponent Color Picker");
122 ImGui::PushStyleColor(ImGuiCol_FrameBg, ImGui::GetStyle().Colors[ImGuiCol_WindowBg]);
123 if(ImGui::ColorEdit3(
"##", glm::value_ptr(m_PointLight.color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_PickerHueBar))
125 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
128 if (ImGuiH::DrawResetIcon(m_PointLight.color != glm::vec3(1.0f, 1.0f, 1.0f)))
130 m_PointLight.color = glm::vec3(1.0f, 1.0f, 1.0f);
131 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
133 ImGui::PopStyleColor();
142 ImGuiH::DrawPropertyItem(
"Intensity", columeWidth,
nullptr, [&]() {
143 ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x - ImGuiH::GetLineItemSize().x);
144 if(ImGui::DragFloat(
"##", &m_PointLight.intensity, 0.1f, 0.0f, 10000.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
146 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
148 ImGui::PopItemWidth();
150 if (ImGuiH::DrawResetIcon(m_PointLight.intensity != 1.0f))
152 m_PointLight.intensity = 1.0f;
153 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
161 ImGuiH::DrawPropertyItem(
"Constantf", columeWidth,
nullptr, [&]() {
162 ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x - ImGuiH::GetLineItemSize().x);
163 if(ImGui::DragFloat(
"##", &m_PointLight.constantf, 0.1f, 0.0f, 10000.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
165 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
167 ImGui::PopItemWidth();
169 if (ImGuiH::DrawResetIcon(m_PointLight.constantf != 1.0f))
171 m_PointLight.constantf = 1.0f;
172 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
180 ImGuiH::DrawPropertyItem(
"Linear", columeWidth,
nullptr, [&]() {
181 ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x - ImGuiH::GetLineItemSize().x);
182 if(ImGui::DragFloat(
"##", &m_PointLight.linear, 0.1f, 0.0f, 10000.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
184 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
186 ImGui::PopItemWidth();
188 if (ImGuiH::DrawResetIcon(m_PointLight.linear != 0.35f))
190 m_PointLight.linear = 0.35f;
191 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
199 ImGuiH::DrawPropertyItem(
"Quadratic", columeWidth,
nullptr, [&]() {
200 ImGui::PushItemWidth(ImGui::GetContentRegionAvail().x - ImGuiH::GetLineItemSize().x);
201 if(ImGui::DragFloat(
"##", &m_PointLight.quadratic, 0.1f, 0.0f, 10000.0f,
"%.2f", ImGuiSliderFlags_AlwaysClamp))
203 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
205 ImGui::PopItemWidth();
207 if (ImGuiH::DrawResetIcon(m_PointLight.quadratic != 0.44f))
209 m_PointLight.quadratic = 0.44f;
210 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
215 ImGui::PopStyleVar();
#define SPICES_PROFILE_ZONEN(...)
#define SPICES_PROFILE_ZONE
virtual void OnDeSerialize() override
This interface defines how to deserialize.
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.
PointLightComponent Class. This class defines the specific behaves of PointLightComponent.