summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-18 23:45:11 +0300
committerPaul Buetow <paul@buetow.org>2026-04-18 23:45:11 +0300
commit341535d0de1214a702439c293d4c769668d1a39c (patch)
tree10d9d1f9065023eed06c7142bb0bae696d8a532f
parent58e9a8abbc808a8ff3f034cecdb810d96c3ed5fe (diff)
feat(aurora): make wild mode dramatically more intense
- Time offset multiplier raised from 7× to 18× (waves churn ~19× faster) - Wave amplitude boosted 3.2× in wild mode (tall, violent ribbon swings) - Camera sways left/right and bobs up/down while wild is active - Ribbons drift vertically independently so they cross and tangle mid-air Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
-rw-r--r--internal/generator/templates/themes/aurora.tmpl15
1 files changed, 12 insertions, 3 deletions
diff --git a/internal/generator/templates/themes/aurora.tmpl b/internal/generator/templates/themes/aurora.tmpl
index 114b23c..e71c576 100644
--- a/internal/generator/templates/themes/aurora.tmpl
+++ b/internal/generator/templates/themes/aurora.tmpl
@@ -272,21 +272,30 @@
function animate() {
requestAnimationFrame(animate);
var realT = clock.getElapsedTime();
- _snoTOffset += (realT - _snoLastT) * (_wild ? 7 : 0);
+ // Wild mode: accelerate time 18× so waves churn much faster
+ _snoTOffset += (realT - _snoLastT) * (_wild ? 18 : 0);
_snoLastT = realT;
var t = realT + _snoTOffset;
+ var ampMult = _wild ? 3.2 : 1;
+ // Camera sways left/right and bobs up/down in wild mode
+ camera.position.x = _wild ? Math.sin(t * 0.28) * 10 : 0;
+ camera.position.y = _wild ? 5 + Math.cos(t * 0.19) * 4 : 5;
+
for (var r = 0; r < ribbons.length; r++) {
var rb = ribbons[r];
var pos = rb.geo.attributes.position;
var count = pos.count;
+ // In wild mode ribbons also drift vertically so they cross and tangle
+ var yDrift = _wild ? Math.sin(t * rb.freq * 0.4 + r * 1.1) * 6 : 0;
+ rb.mesh.position.y = ribbonY[r] + yDrift;
// PlaneGeometry vertices: (SEG_W+1)*2 total; top row is every other vertex
for (var i = 0; i < count; i++) {
var x = pos.getX(i);
// Only animate top row (y > 0 in local space) for the waving top edge
if (pos.getY(i) > 0) {
- pos.setY(i, rb.amp * Math.sin(t * rb.freq + x * 0.08 + rb.phase)
- + rb.amp * 0.4 * Math.cos(t * rb.freq * 0.7 + x * 0.05));
+ pos.setY(i, rb.amp * ampMult * Math.sin(t * rb.freq + x * 0.08 + rb.phase)
+ + rb.amp * ampMult * 0.4 * Math.cos(t * rb.freq * 0.7 + x * 0.05));
}
}
pos.needsUpdate = true;