summaryrefslogtreecommitdiff
path: root/src/SomhairlesDream.Frontend/Bindings.fs
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-21 02:59:53 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-21 02:59:53 +0800
commit822c092790bad4b1c0d780c1fafee063d70c91f6 (patch)
treec4a7d9f740cc1c8bba39c4ded0fc3da15fcc5a5f /src/SomhairlesDream.Frontend/Bindings.fs
parent183c4869e6baf03ad12d10ab8deeaec656a7d348 (diff)
downloadsomhairles-dream-fsharp-822c092790bad4b1c0d780c1fafee063d70c91f6.tar.gz
fix(viewer): guard step loads by generation and run identity, add stale-load regression
Diffstat (limited to 'src/SomhairlesDream.Frontend/Bindings.fs')
-rw-r--r--src/SomhairlesDream.Frontend/Bindings.fs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/SomhairlesDream.Frontend/Bindings.fs b/src/SomhairlesDream.Frontend/Bindings.fs
index a0276cc..2822e33 100644
--- a/src/SomhairlesDream.Frontend/Bindings.fs
+++ b/src/SomhairlesDream.Frontend/Bindings.fs
@@ -18,6 +18,10 @@ type ThreeNode =
abstract position: ThreeVector with get
abstract rotation: ThreeVector with get
abstract background: obj with get, set
+ abstract children: ThreeNode array with get
+
+[<Emit("$0.traverse(function (o) { if (o.geometry && o.geometry.dispose) { o.geometry.dispose(); } var mats = Array.isArray(o.material) ? o.material : (o.material ? [o.material] : []); mats.forEach(function (m) { ['map','normalMap','roughnessMap','metalnessMap','aoMap','emissiveMap'].forEach(function (key) { var t = m[key]; if (t && t.dispose) { t.dispose(); } }); if (m.dispose) { m.dispose(); } }); })")>]
+let disposeNodeResources (node: ThreeNode) : unit = jsNative
[<Erase>]
type ThreeBox3 =