Initial claude dump
This commit is contained in:
@@ -2,31 +2,31 @@
|
||||
|
||||
#include <imgui.h>
|
||||
|
||||
void SceneHierarchyPanel::drawNode(const Node& node) {
|
||||
if (node.children.empty()) {
|
||||
#include <sophia/components.hpp>
|
||||
|
||||
void SceneHierarchyPanel::onUpdate(const sophia::FrameInfo&) {
|
||||
if (ImGui::Button("+ Sprite")) {
|
||||
selected = scene.createEntity("Sprite");
|
||||
selected.addComponent<sophia::SpriteComponent>();
|
||||
}
|
||||
|
||||
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 (node.name == selected) {
|
||||
if (entity == selected) {
|
||||
flags |= ImGuiTreeNodeFlags_Selected;
|
||||
}
|
||||
ImGui::TreeNodeEx(node.name.c_str(), flags);
|
||||
|
||||
const std::string& name = entity.getComponent<sophia::TagComponent>().tag;
|
||||
ImGui::PushID(static_cast<int>(static_cast<sophia::u32>(entity)));
|
||||
ImGui::TreeNodeEx(name.c_str(), flags);
|
||||
if (ImGui::IsItemClicked()) {
|
||||
selected = node.name;
|
||||
selected = entity;
|
||||
}
|
||||
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&) {
|
||||
for (const Node& node : nodes) {
|
||||
drawNode(node);
|
||||
}
|
||||
ImGui::PopID();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user