#include "scene_hierarchy_panel.hpp" #include void SceneHierarchyPanel::drawNode(const Node& node) { if (node.children.empty()) { ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags_Leaf | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_SpanAvailWidth; if (node.name == selected) { flags |= ImGuiTreeNodeFlags_Selected; } ImGui::TreeNodeEx(node.name.c_str(), flags); if (ImGui::IsItemClicked()) { selected = node.name; } return; } if (ImGui::TreeNodeEx(node.name.c_str(), ImGuiTreeNodeFlags_SpanAvailWidth)) { for (const Node& child : node.children) { drawNode(child); } ImGui::TreePop(); } } void SceneHierarchyPanel::onUpdate(const sophia::FrameInfo&) { ImGui::Begin("Scene Hierarchy"); for (const Node& node : nodes) { drawNode(node); } ImGui::End(); }