ludic.ui: a screen's nodes and envs are pooled and used again - two generations a screen, reset in place, their own lists emptied not replaced; a tree is good until its screen is built twice more (benchmark 256 -> 110 KB a frame)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
83200a453b
commit
d1c9359e96
19 changed files with 307 additions and 83 deletions
|
|
@ -9,11 +9,14 @@ function cs_tree(ui_st: mut UiState, n: UiNode) -> void {
|
|||
}
|
||||
if n.tag != "" { cs_node(ui_st, n) }
|
||||
for i in 0 .. len(n.children) { cs_tree(ui_st, n.children[i]) }
|
||||
var shown = new []UiNode
|
||||
var kept = 0
|
||||
for i in 0 .. len(n.children) {
|
||||
if not n.children[i].hidden { push(shown, n.children[i]) }
|
||||
if not n.children[i].hidden {
|
||||
n.children[kept] = n.children[i]
|
||||
kept += 1
|
||||
}
|
||||
}
|
||||
n.children = shown
|
||||
while len(n.children) > kept { List.pop(n.children) }
|
||||
cs_order(n)
|
||||
}
|
||||
# twice: the font size (and zoom) first, from every rule, so an em anywhere reads the size the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue