diff options
| author | brian cully <bjc@spork.org> | 2025-12-29 11:32:52 -0500 |
|---|---|---|
| committer | brian cully <bjc@spork.org> | 2025-12-29 11:32:52 -0500 |
| commit | 367341ea9f495c9829aad067c9d0bc2f2b9b482f (patch) | |
| tree | d65a792c2dc2ee6891683e150453619be5b58ef8 /site/pure.mjs | |
| parent | a5a1afc868579bcf61282b45ac65c9017bcc564f (diff) | |
| download | polyring-367341ea9f495c9829aad067c9d0bc2f2b9b482f.tar.gz polyring-367341ea9f495c9829aad067c9d0bc2f2b9b482f.zip | |
pure: separate render/update
Diffstat (limited to 'site/pure.mjs')
| -rw-r--r-- | site/pure.mjs | 67 |
1 files changed, 36 insertions, 31 deletions
diff --git a/site/pure.mjs b/site/pure.mjs index 3a77aee..5065bb7 100644 --- a/site/pure.mjs +++ b/site/pure.mjs @@ -201,29 +201,9 @@ function bouncePoints(points) { return didBounce; } -export default async function () { - const canvas = document.querySelector('canvas'); - const ctx = canvas.getContext('2d'); - console.debug('canvas:', canvas, 'ctx', ctx); - ctx.scale(canvas.width, canvas.height); - - const fps = document.querySelector('#fps'); - - const goButton = document.querySelector('button'); - let paused = true; - goButton.onclick = e => { - paused = !paused; - if (paused) { - e.target.textContent = 'go'; - } else { - e.target.textContent = 'pause'; - self.requestAnimationFrame(render); - } - }; - - let lastTime = document.timeline.currentTime; - let interCount = 1; - function render(t) { +let lastTime = document.timeline.currentTime; +let interCount = 1; +function renderFrame(t, canvas, ctx, fps) { if (t > lastTime) { fps.textContent = Math.floor(1_000 * interCount / (t - lastTime)); lastTime = t; @@ -233,12 +213,7 @@ export default async function () { } ctx.clearRect(0, 0, canvas.width, canvas.height); - renderPoints(ctx, points); - if (bouncePoints(points)) { - //goButton.onclick({ target: goButton }); - } - movePoints(points); points.sort((a, b) => a.y > b.y); const polyPoints = findPoly3(points); @@ -255,12 +230,42 @@ export default async function () { last = p; } +} +function update(points) { + if (bouncePoints(points)) { + // console.debug("bounced"); + } + movePoints(points); +} + +export default async function () { + const canvas = document.querySelector('canvas'); + const ctx = canvas.getContext('2d'); + console.debug('canvas:', canvas, 'ctx', ctx); + ctx.scale(canvas.width, canvas.height); + + const fps = document.querySelector('#fps'); + + const goButton = document.querySelector('button'); + let paused = true; + goButton.onclick = e => { + paused = !paused; + if (paused) { + e.target.textContent = 'go'; + } else { + e.target.textContent = 'pause'; + self.requestAnimationFrame(render); + } + }; + + let interCount = 1; + function render(t) { + update(points); + renderFrame(t, canvas, ctx, fps); if (!paused) { self.requestAnimationFrame(render); } } - - //goButton.onclick({ target: goButton }); - render(document.timeline.currentTime); + renderFrame(document.timeline.currentTime, canvas, ctx, fps); } |
