OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-tps commits / a2d0f1b

#127: the organizer's status line counts the rows refresh() built (-44 ms a fold at a 20-cable bundle)
_update_status called model.rows() again: a second full row build per refresh, and per selection change. A/B on bundle20 (quiet machine): outliner listener 225.8 -> 181.8 ms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
a2d0f1b79d21bb94c72eda6706b2f564ee4619ca
by plankatron <fleeky@gmail.com> · 2026-10-19T19:44:53.000Z

Changed files (1) +8 -1

scenes/game/outliner_panel.gd +8 -1
……@@ -553,6 +553,7 @@ func refresh() -> void:
553553 _obj_row.clear()
554554 _group_row.clear()
555555 var rows: Array = model.rows()
556 _rows = rows
556557 var groups: Array = []
557558 for r: Dictionary in rows:
558559 if bool(r.get("system", false)) and not show_system:
……@@ -1243,12 +1244,18 @@ func _select_in_viewport_rows(r: Dictionary) -> void:
12431244 map.select_brushes(ids)
12441245
12451246
1247## The rows the tree on screen was built from (refresh()). The status line counts these
1248## rather than calling model.rows() again: that second build was ~40 ms of a 20-cable
1249## bundle's ~220 ms refresh, paid twice per fold (#127), and every hide change refreshes.
1250var _rows: Array = []
1251
1252
12461253func _update_status() -> void:
12471254 if _status == null or model == null:
12481255 return
12491256 var r: Dictionary = _selected_row()
12501257 var hidden := 0
1251 for row: Dictionary in model.rows():
1258 for row: Dictionary in _rows:
12521259 if bool(row["self_hidden"]):
12531260 hidden += 1
12541261 var sel := "nothing selected"