From e6d3195ef4bf0b5e2ec39b6365e97dcd78ee3f7e Mon Sep 17 00:00:00 2001 From: user666 Date: Tue, 11 Nov 2025 19:37:48 +0400 Subject: [PATCH 1/2] visualize visibility state of of nodes in tree page as in good old days --- src/DevTools.hpp | 2 +- src/pages/Tree.cpp | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/DevTools.hpp b/src/DevTools.hpp index 9de54a4..f6a808a 100644 --- a/src/DevTools.hpp +++ b/src/DevTools.hpp @@ -62,7 +62,7 @@ class DevTools { void setupPlatform(); void drawTree(); - void drawTreeBranch(CCNode* node, size_t index, bool drag); + void drawTreeBranch(CCNode* node, size_t index, bool drag, bool visible); void drawSettings(); void drawAdvancedSettings(); void drawNodeAttributes(CCNode* node); diff --git a/src/pages/Tree.cpp b/src/pages/Tree.cpp index 2a00366..5dd5cd3 100644 --- a/src/pages/Tree.cpp +++ b/src/pages/Tree.cpp @@ -35,11 +35,13 @@ bool isNodeParentOf(CCNode* parent, CCNode* child) { return false; } -void DevTools::drawTreeBranch(CCNode* node, size_t index, bool drag) { +void DevTools::drawTreeBranch(CCNode* node, size_t index, bool drag, bool visible) { if (!this->searchBranch(node)) { return; } + visible = node->isVisible() and visible; + auto selected = DevTools::get()->getSelectedNode() == node; ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags_None; @@ -103,11 +105,22 @@ void DevTools::drawTreeBranch(CCNode* node, size_t index, bool drag) { ImGui::SetNextItemOpen(true); } + auto alpha = ImGui::GetStyle().DisabledAlpha; + ImGui::GetStyle().DisabledAlpha = node->isVisible() ? alpha + 0.15f : alpha; + + ImGui::BeginDisabled(!visible); + ImGui::PushItemFlag(ImGuiItemFlags_Disabled, false); // Bypass iteract blocking in imgui + const auto name = formatNodeName(node, index); // The order here is unusual due to imgui weirdness; see the second-to-last paragraph in https://kahwei.dev/2022/06/20/imgui-tree-node/ bool expanded = ImGui::TreeNodeEx(node, flags, "%s", name.c_str()); float height = ImGui::GetItemRectSize().y; + + ImGui::GetStyle().DisabledAlpha = alpha; + ImGui::PopItemFlag(); //ImGuiItemFlags_Disabled + ImGui::EndDisabled(); + if (ImGui::IsItemClicked()) { DevTools::get()->selectNode(node); selected = true; @@ -152,7 +165,7 @@ void DevTools::drawTreeBranch(CCNode* node, size_t index, bool drag) { } size_t i = 0; for (auto& child : CCArrayExt(node->getChildren())) { - this->drawTreeBranch(child, i++, drag || isDrag); + this->drawTreeBranch(child, i++, drag || isDrag, visible); } ImGui::TreePop(); } @@ -177,7 +190,7 @@ void DevTools::drawTree() { m_searchQuery.clear(); } - this->drawTreeBranch(CCDirector::get()->getRunningScene(), 0, false); + this->drawTreeBranch(CCDirector::get()->getRunningScene(), 0, false, true); if (auto* dragged = this->getDraggedNode()) { const auto name = formatNodeName(dragged, 0); From f75edc8f03ebb1974d805aaf28084af9fe0d93c2 Mon Sep 17 00:00:00 2001 From: LatterRarity70 <90561697+LatterRarity70@users.noreply.github.com> Date: Tue, 11 Nov 2025 19:57:43 +0400 Subject: [PATCH 2/2] && --- src/pages/Tree.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/Tree.cpp b/src/pages/Tree.cpp index 5dd5cd3..37182ef 100644 --- a/src/pages/Tree.cpp +++ b/src/pages/Tree.cpp @@ -40,7 +40,7 @@ void DevTools::drawTreeBranch(CCNode* node, size_t index, bool drag, bool visibl return; } - visible = node->isVisible() and visible; + visible = node->isVisible() && visible; auto selected = DevTools::get()->getSelectedNode() == node; @@ -230,4 +230,5 @@ bool DevTools::searchBranch(CCNode* node) { } } return false; -} \ No newline at end of file + +}