2
3
4
5
9#include "World/World/World.h"
10#include "Slate/SlateInfoBar.h"
19
20
21 if (m_SelectedInfoBar)
23 if (m_SelectedInfoBar->IsDestroy())
25 m_SelectedInfoBar =
nullptr;
29 std::vector<std::string> eraseList;
31 m_InfoBars.for_each([&](
auto& k,
auto& v) {
35 eraseList.push_back(v->GetInfo());
42
43
44 for (
auto& item : eraseList)
46 m_InfoBars.erase(item);
55
56
57 Begin(m_PanelName, 1.0f, ImGuiWindowFlags_NoTitleBar);
62 float width = ImGui::GetContentRegionAvail().x;
66
67
68 if (m_InfoBars.size() == 0)
74 ImGui::PushID(
"ImguiInfoBar");
76 auto item = m_SelectedInfoBar ? m_SelectedInfoBar : *m_InfoBars.first();
80 ImGui::SetColumnWidth(0, 0.5f * width);
83 ImGui::SetColumnWidth(1, 0.39f * width);
84 ImGui::Text(item->GetInfo().c_str());
87 switch (item->GetType())
89 case SlateInfoBar::Type::progress:
91 float rate = std::any_cast<
float>(item->GetRate());
92 ImGui::PushStyleColor(ImGuiCol_PlotHistogram, ImVec4(0.310f, 0.49f, 0.627f, 1.0f));
93 ImGui::ProgressBar(rate);
94 ImGui::PopStyleColor();
97 case SlateInfoBar::Type::count:
99 int count = std::any_cast<
int>(item->GetRate());
100 std::stringstream ss;
103 ImGui::Text(ss.str().c_str());
116 if (ImGui::BeginPopupContextWindow(0, 1))
118 m_InfoBars.for_each([&](
auto& k,
auto& v) {
120 if (ImGui::MenuItem(k.c_str()))
122 m_SelectedInfoBar = v;
133
134
142 m_InfoBars.push_back(instance->GetInfo(), instance);
#define SPICES_PROFILE_ZONEN(...)
#define SPICES_PROFILE_ZONE
void Push(std::shared_ptr< SlateInfoBar > instance)
Add a InfoBar instance to this.
virtual void OnRender() override
This interface is called On SlateRenderer Render.
virtual void OnUpdate(TimeStep &ts) override
This interface is called On SlateSystem Update.
The ImguiInfoBar Class. This class defines how to render a Operation Panel.
This Class defines InfoBar instance.
This Class handles our engine time step during frames. Global Unique.