Skip to content

Commit 129a878

Browse files
committed
Disabled nodes transitiviely disable all their children.
1 parent d815fe2 commit 129a878

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

inox2d/src/puppet/tree.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,22 @@ impl InoxNodeTree {
9393
.children(&self.arena)
9494
.map(|id| self.arena.get(id).unwrap().get())
9595
}
96+
97+
pub fn is_node_enabled(&self, node: InoxNodeUuid) -> bool {
98+
let mut node = self.get_node(node).unwrap();
99+
100+
loop {
101+
if !node.enabled {
102+
return false;
103+
}
104+
105+
if node.uuid == self.root_node_id {
106+
break;
107+
}
108+
109+
node = self.get_parent(node.uuid);
110+
}
111+
112+
return true;
113+
}
96114
}

inox2d/src/render.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -291,8 +291,7 @@ impl<T: InoxRenderer> InoxRendererExt for T {
291291
DrawableKind::Composite(ref components) => &components.drawable.masks,
292292
};
293293

294-
let is_enabled = puppet.nodes.get_node(id).unwrap().enabled;
295-
if !is_enabled && !as_mask {
294+
if !as_mask && !puppet.nodes.is_node_enabled(id) {
296295
// Disabled nodes don't render, but they can still be used as masks.
297296
return;
298297
}
@@ -335,8 +334,7 @@ impl<T: InoxRenderer> InoxRendererExt for T {
335334
return;
336335
}
337336

338-
let is_enabled = puppet.nodes.get_node(id).unwrap().enabled;
339-
if !is_enabled && !as_mask {
337+
if !as_mask && !puppet.nodes.is_node_enabled(id) {
340338
// Disabled nodes don't render, but they can still be used as masks.
341339
return;
342340
}

0 commit comments

Comments
 (0)