From d59c80d28a78c5084e06f3aa1aac95dd0cf8fb7e Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 28 May 2025 17:33:46 +0200 Subject: [PATCH] Refactor and optimize animation loop for performance --- node/server/public/app.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/node/server/public/app.js b/node/server/public/app.js index 252fe8e..dd93234 100644 --- a/node/server/public/app.js +++ b/node/server/public/app.js @@ -584,21 +584,23 @@ renderer.domElement.addEventListener('pointerdown', onClick); // (aber Option: „verstecke Overlay“ falls Spirit verschwindet, kann man so machen...) // ---- Render-Loop ---- -function animate() { - const dt = clock.getDelta(), t = clock.getElapsedTime(); - // Spinner-Animation & Netzwerk - if (spinnerController) spinnerController.animate(dt, t); +function animate(now) { + requestAnimationFrame(animate); + // FPS-Limitierung + if (now - lastAnim < 1000 / targetFps) return; + lastAnim = now; - // Update & remove expired spirits: + // ... Rest wie gehabt ... + const dt = clock.getDelta(), t = clock.getElapsedTime(); + if (spinnerController) spinnerController.animate(dt, t); for (let i = activeSpirits.length - 1; i >= 0; i--) { if (!activeSpirits[i].update(dt)) { activeSpirits.splice(i, 1); } } - composer.render(scene, camera); - requestAnimationFrame(animate); } +requestAnimationFrame(animate); document.addEventListener('keydown', (e) => { if (e.key === 'Escape') {