SpiecsEngine
 
Loading...
Searching...
No Matches

◆ DrawThis()

void Spices::DirectionalLightComponent::DrawThis ( )
overridevirtual

This interface defines how to draw this component to property panel.

Reimplemented from Spices::Component.

Definition at line 26 of file DirectionalLightComponent.cpp.

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 {
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;
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 {
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;
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 {
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;
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 {
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);
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 {
148 }
149 ImGui::PopItemWidth();
150 ImGui::SameLine();
151 if (ImGuiH::DrawResetIcon(m_DirectionalLight.intensity != 1.0f))
152 {
153 m_DirectionalLight.intensity = 1.0f;
155 }
156 });
157 }
158
159 ImGui::PopStyleVar();
160 ImGui::Spacing();
161 }
#define SPICES_PROFILE_ZONEN(...)
#define SPICES_PROFILE_ZONE
SpicesShader::DirectionalLight m_DirectionalLight
This DirectionalLight data this component handled.
static FrameInfo & Get()
Get FrameInfo.
Definition FrameInfo.cpp:14
std::shared_ptr< World > m_World
The shared pointer of specific world.
Definition FrameInfo.h:94
static ImVec2 GetLineItemSize()
Get Line Width's Square Size.
static bool DrawResetIcon(const bool &isMove)
Draw Reset Icon.
static void DrawPropertyItem(const std::string &itemName, float columeWidth, std::function< void()> nameFunc, std::function< void()> valFunc)
Draw a single property.
@ FrushStableFrame
Definition World.h:48