the paper doll goes half rate, and the parked frame diets

- the paper doll joins the collapsed rig lane and its body panes render every other frame while open, the pose still evaluating at full rate (boothHalfRate CVar) — the open character window's cost at Goldshire ~+2.7 → ~+1.0 ms
- the parked frame's idle diet: avian's dynamics pipeline goes (the world has zero dynamic bodies), the hidden dev overlay stops drawing an empty pass, and a unit's swim state is re-checked only when it moved — 12.8–13.3 → 12.0 ms parked at Goldshire
- the UI tick stops sweeping the whole frame arena three times over: OnUpdate frames and the message and cooldown kinds live on registries kept at their one write site — idle tick 530 → ~195 µs a frame
- the WOW_MEGA_STATIC bracket retires, past its recorded condition now that the retained pass carries its own

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Sam
2026-08-20 19:02:44 +07:00
co-authored by Claude Fable 5
parent 5360a44f89
commit 85d62fec73
23 changed files with 516 additions and 363 deletions
@@ -358,13 +358,19 @@ fn set_script(lua: &Lua, this: &Table, name: &str, func: Option<Function>) -> ml
Some(f) => {
per.set(kind, f)?;
let mut model = lua.app_data_mut::<Model>().expect("model");
model.scripts.entry(h).or_default().insert(kind);
// `insert` answering true = this frame did not have the kind before — the tick's
// OnUpdate list rides that edge (decision 1446; `scripts` has no other writer).
if model.scripts.entry(h).or_default().insert(kind) && kind == "OnUpdate" {
model.on_update_frames.push(h);
}
}
None => {
per.set(kind, Value::Nil)?;
let mut model = lua.app_data_mut::<Model>().expect("model");
if let Some(set) = model.scripts.get_mut(&h) {
set.remove(&kind);
if set.remove(&kind) && kind == "OnUpdate" {
model.on_update_frames.retain(|&x| x != h);
}
}
}
}