debug gui select/hide nodes
[laserbrain_demo] / src / snode.cc
index fd37f24..b171f35 100644 (file)
@@ -11,6 +11,7 @@ SceneNode::SceneNode()
        scene = 0;
        parent = 0;
        name = 0;
+       visible = true;
        local_bvol_valid = false;
 }
 
@@ -20,6 +21,7 @@ SceneNode::SceneNode(Object *obj)
        scene = 0;
        parent = 0;
        name = 0;
+       visible = true;
        local_bvol_valid = false;
        add_object(obj);
 }
@@ -205,8 +207,21 @@ void SceneNode::update(float dt)
 
        if(debug_gui) {
                if(parent_expanded) {
-                       int flags = children.empty() ? ImGuiTreeNodeFlags_Leaf : 0;
+                       ImGui::PushID(this);
+                       ImGui::AlignTextToFramePadding();
+
+                       int flags = ImGuiTreeNodeFlags_OpenOnArrow | ImGuiTreeNodeFlags_OpenOnDoubleClick;
+                       if(children.empty()) flags |= ImGuiTreeNodeFlags_Leaf;
+                       if(dbg_sel_node == this) flags |= ImGuiTreeNodeFlags_Selected;
                        expanded = ImGui::TreeNodeEx(name ? name : "<nameless node>", flags);
+                       if(ImGui::IsItemClicked()) {
+                               dbg_sel_node = this;
+                       }
+
+                       ImGui::NextColumn();
+                       ImGui::Checkbox("##vis", &visible);
+                       ImGui::NextColumn();
+                       ImGui::PopID();
                }
        }