SpiecsEngine
 
Loading...
Searching...
No Matches
DirectionalLightComponent.cpp
Go to the documentation of this file.
1/**
2* @file CameraComponent.cpp.
3* @brief The CameraComponent Class Implementation.
4* @author Spices.
5*/
6
7#include "Pchheader.h"
9#include "Render/FrameInfo.h"
10#include "World/World/World.h"
11
12#include "imgui_internal.h"
13#include <glm/gtc/type_ptr.hpp>
14
15namespace Spices {
16
18 {
19
20 }
22 {
23
24 }
25
27 {
29
30 ImGui::Spacing();
31 ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2{ 0, 3.0f });
32 float columeWidth = ImGuiH::GetLineItemSize().x * 6.5f;
33
34 {
35 SPICES_PROFILE_ZONEN("DirectionalLightComponent Color");
36
37 ImGuiH::DrawPropertyItem("Color", columeWidth, nullptr, [&]() {
38
39 float itemWidth = (ImGui::GetContentRegionAvail().x - 8.0f * ImGuiH::GetLineItemSize().x) / 3.0f;
40
41 {
42 SPICES_PROFILE_ZONEN("DirectionalLightComponent Color R");
43 ImGui::PushID("DirectionalLightComponent Color R");
44
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);
50 ImGui::SameLine();
51 ImGui::PushItemWidth(itemWidth);
52 if(ImGui::SliderFloat("##R", &m_DirectionalLight.color.x, 0.0f, 1.0f, "%.2f", ImGuiSliderFlags_AlwaysClamp))
53 {
54 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
55 }
56 ImGui::PopItemWidth();
57 ImGui::SameLine();
58 if (ImGuiH::DrawResetIcon(m_DirectionalLight.color.x != 1.0f))
59 {
60 m_DirectionalLight.color.x = 1.0f;
61 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
62 }
63 ImGui::SameLine();
64 ImGui::PopID();
65 }
66
67 {
68 SPICES_PROFILE_ZONEN("DirectionalLightComponent Color G");
69 ImGui::PushID("DirectionalLightComponent Color G");
70
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);
76 ImGui::SameLine();
77 ImGui::PushItemWidth(itemWidth);
78 if(ImGui::SliderFloat("##G", &m_DirectionalLight.color.y, 0.0f, 1.0f, "%.2f", ImGuiSliderFlags_AlwaysClamp))
79 {
80 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
81 }
82 ImGui::PopItemWidth();
83 ImGui::SameLine();
84 if (ImGuiH::DrawResetIcon(m_DirectionalLight.color.y != 1.0f))
85 {
86 m_DirectionalLight.color.y = 1.0f;
87 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
88 }
89 ImGui::SameLine();
90 ImGui::PopID();
91 }
92
93 {
94 SPICES_PROFILE_ZONEN("DirectionalLightComponent Color B");
95 ImGui::PushID("DirectionalLightComponent Color B");
96
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);
102 ImGui::SameLine();
103 ImGui::PushItemWidth(itemWidth);
104 if(ImGui::SliderFloat("##B", &m_DirectionalLight.color.z, 0.0f, 1.0f, "%.2f", ImGuiSliderFlags_AlwaysClamp))
105 {
106 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
107 }
108 ImGui::PopItemWidth();
109 ImGui::SameLine();
110 if (ImGuiH::DrawResetIcon(m_DirectionalLight.color.z != 1.0f))
111 {
112 m_DirectionalLight.color.z = 1.0f;
113 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
114 }
115 ImGui::SameLine();
116 ImGui::PopID();
117 }
118
119 {
120 SPICES_PROFILE_ZONEN("DirectionalLightComponent Color Picker");
121 ImGui::PushID("DirectionalLightComponent Color Picker");
122
123 ImGui::PushStyleColor(ImGuiCol_FrameBg, ImGui::GetStyle().Colors[ImGuiCol_WindowBg]);
124 if(ImGui::ColorEdit3("##", glm::value_ptr(m_DirectionalLight.color), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_PickerHueBar))
125 {
126 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
127 }
128 ImGui::SameLine();
129 if (ImGuiH::DrawResetIcon(m_DirectionalLight.color != glm::vec3(1.0f, 1.0f, 1.0f)))
130 {
131 m_DirectionalLight.color = glm::vec3(1.0f, 1.0f, 1.0f);
132 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
133 }
134 ImGui::PopStyleColor();
135 ImGui::PopID();
136 }
137 });
138 }
139
140 {
141 SPICES_PROFILE_ZONEN("DirectionalLightComponent Intensity");
142
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))
146 {
147 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
148 }
149 ImGui::PopItemWidth();
150 ImGui::SameLine();
151 if (ImGuiH::DrawResetIcon(m_DirectionalLight.intensity != 1.0f))
152 {
153 m_DirectionalLight.intensity = 1.0f;
154 FrameInfo::Get().m_World->Mark(World::FrushStableFrame);
155 }
156 });
157 }
158
159 ImGui::PopStyleVar();
160 ImGui::Spacing();
161 }
162}
#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...