From 70352d12fda8da1137667348bd64fcbc48edbaf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?d=20=F0=9F=94=B9?= <258577966+voidborne-d@users.noreply.github.com> Date: Sat, 2 May 2026 12:17:19 +0800 Subject: [PATCH] fix(core): make three adapter seek robust against late listeners The three adapter dispatched seeks via a CustomEvent on window. When a composition's @@ -72,10 +81,27 @@ function renderAt(time) { mixer.setTime(time); renderer.render(scene, camera); } + +window.__hfThreeRender = window.__hfThreeRender || []; +window.__hfThreeRender.push(renderAt); ``` If several mixers exist, seek all of them from the same `time`. +## Multiple Layers + +`window.__hfThreeRender` is an array — every layer can register its own +render callback and they all receive the same time on every seek: + +```js +window.__hfThreeRender = window.__hfThreeRender || []; +window.__hfThreeRender.push(renderForeground); +window.__hfThreeRender.push(renderBackground); +``` + +The adapter swallows callback errors so one broken layer cannot starve the +others. + ## Good Uses - Deterministic 3D objects, product spins, particles with seeded data, and shader plates.