#include "scene_hierarchy_panel.hpp" #include #include void SceneHierarchyPanel::onUpdate(const sophia::FrameInfo&) { if (ImGui::Button("+ Sprite")) { selected = scene.createEntity("Sprite"); selected.addComponent(); } ImGui::Separator(); // Flat for now: there is no parent/child component yet. scene.forEachEntity([this](sophia::Entity entity) { ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags_Leaf | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_SpanAvailWidth; if (entity == selected) { flags |= ImGuiTreeNodeFlags_Selected; } const std::string& name = entity.getComponent().tag; ImGui::PushID(static_cast(static_cast(entity))); ImGui::TreeNodeEx(name.c_str(), flags); if (ImGui::IsItemClicked()) { selected = entity; } ImGui::PopID(); }); }