diff options
| author | Somhairle H. Marisol <[email protected]> | 2026-09-21 02:59:53 +0800 |
|---|---|---|
| committer | Somhairle H. Marisol <[email protected]> | 2026-09-21 02:59:53 +0800 |
| commit | 822c092790bad4b1c0d780c1fafee063d70c91f6 (patch) | |
| tree | c4a7d9f740cc1c8bba39c4ded0fc3da15fcc5a5f /src/SomhairlesDream.Frontend/Bindings.fs | |
| parent | 183c4869e6baf03ad12d10ab8deeaec656a7d348 (diff) | |
| download | somhairles-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.fs | 4 |
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 = |
