@minicode-dev/chat 0.1.14 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{BattleshipGameCard-B-B4r7lK.js → BattleshipGameCard-8H-sBCsv.js} +3 -3
- package/dist/chunks/{BattleshipGameCard-B-B4r7lK.js.map → BattleshipGameCard-8H-sBCsv.js.map} +1 -1
- package/dist/chunks/{ChatContext-DQtKsR6Z.js → ChatContext-CVW58bzC.js} +2 -2
- package/dist/chunks/{ChatContext-DQtKsR6Z.js.map → ChatContext-CVW58bzC.js.map} +1 -1
- package/dist/chunks/{RacingLiveGameCard-c1G7uoDI.js → RacingLiveGameCard-8j9QLnxW.js} +4 -4
- package/dist/chunks/{RacingLiveGameCard-c1G7uoDI.js.map → RacingLiveGameCard-8j9QLnxW.js.map} +1 -1
- package/dist/chunks/{TanksGameCard-CvTaF7tu.js → TanksGameCard-DnCufSH6.js} +12 -12
- package/dist/chunks/{TanksGameCard-CvTaF7tu.js.map → TanksGameCard-DnCufSH6.js.map} +1 -1
- package/dist/chunks/TanksLiveGameCard-D_27Jomp.js +1274 -0
- package/dist/chunks/TanksLiveGameCard-D_27Jomp.js.map +1 -0
- package/dist/chunks/{avalancheScene3d-Z5QyZIid.js → avalancheScene3d-CIE2WKQn.js} +51 -50
- package/dist/chunks/{avalancheScene3d-Z5QyZIid.js.map → avalancheScene3d-CIE2WKQn.js.map} +1 -1
- package/dist/chunks/cars-D1PM7mVD.js +340 -0
- package/dist/chunks/cars-D1PM7mVD.js.map +1 -0
- package/dist/chunks/{connect4Sounds-DmD-E9kX.js → connect4Sounds-BqEHULjv.js} +2 -2
- package/dist/chunks/{connect4Sounds-DmD-E9kX.js.map → connect4Sounds-BqEHULjv.js.map} +1 -1
- package/dist/chunks/createLiveScene-MTGRv8rx.js +758 -0
- package/dist/chunks/createLiveScene-MTGRv8rx.js.map +1 -0
- package/dist/chunks/{createRaceScene-C7Rw89kj.js → createRaceScene-BiEtQsVs.js} +4 -3
- package/dist/chunks/{createRaceScene-C7Rw89kj.js.map → createRaceScene-BiEtQsVs.js.map} +1 -1
- package/dist/chunks/fx-DhXerGyt.js +248 -0
- package/dist/chunks/fx-DhXerGyt.js.map +1 -0
- package/dist/chunks/{games-BvYTWgaR.js → games-Bl_8raG6.js} +1147 -574
- package/dist/chunks/games-Bl_8raG6.js.map +1 -0
- package/dist/chunks/{tanksSounds-DwjfSp3W.js → tanksSounds-DTnidbiq.js} +5 -5
- package/dist/chunks/{tanksSounds-DwjfSp3W.js.map → tanksSounds-DTnidbiq.js.map} +1 -1
- package/dist/index.js +28 -28
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/chunks/TanksLiveGameCard-COr9Oay5.js +0 -1011
- package/dist/chunks/TanksLiveGameCard-COr9Oay5.js.map +0 -1
- package/dist/chunks/createLiveScene-CWBunxPi.js +0 -367
- package/dist/chunks/createLiveScene-CWBunxPi.js.map +0 -1
- package/dist/chunks/fx-UZwhOmdl.js +0 -584
- package/dist/chunks/fx-UZwhOmdl.js.map +0 -1
- package/dist/chunks/games-BvYTWgaR.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fx-DhXerGyt.js","names":["STRIDE","PX","PY","PZ","VX","VY","VZ","AGE","LIFE","S0","S1","R0","G0","B0","R1","G1","B1","A0","DRAG","GRAV","HOT","SPIN","TW","COL","Color","VERT","FRAG","rand","min","max","clampPower","power","makeCanvas","canvas","size","softDot","c","gradient","ctx","CanvasTexture","smokeBlob","seed","next","i","angle","offset","x","y","radius","glint","core","ray","length","width","spec","particle","z","createBatch","data","cap","phase","pos","col","rot","geometry","BufferGeometry","attribute","BufferAttribute","array","itemSize","DynamicDrawUsage","material","ShaderMaterial","scale","map","additive","AdditiveBlending","NormalBlending","points","Points","renderOrder","attributes","itemSizes","entry","count","cursor","o","p","age","dt","life","p3","p4","damp","k","t","blend","inv","hot","fin","fadeIn","fout","tw","a","createAvalancheFx","lowPower","n","base","dot","blob","star","bufferSize","Vector2","syncScale","renderer","camera","smoke","fire","glints","batches","group","Group","batch","flashes","sprite","Sprite","SpriteMaterial","flashCursor","disposed","flash","dur","puff","grow","ring","cos","sin","r0","speed","s","billows","sparkle","blast","fireCount","theta","phi","sparkCount","smokeCount","update","step","b","f","dispose","scene"],"sources":["../../src/effects/avalanche/fx.js"],"sourcesContent":["// Avalancha FX: landing dust, coin glints and mini tank blasts.\n// Three pooled Points batches (smoke, fire, glint) + a few flash sprites. Every GPU resource and\n// buffer is created once; update() does no allocations. Textures are generated CanvasTextures.\nimport {\n AdditiveBlending, BufferAttribute, BufferGeometry, CanvasTexture, Color, DynamicDrawUsage, Group,\n NormalBlending, Points, ShaderMaterial, Sprite, SpriteMaterial, Vector2,\n} from 'three';\n\n// Per-particle record layout (Float32Array, STRIDE floats each).\nconst STRIDE = 22;\nconst PX = 0, PY = 1, PZ = 2, VX = 3, VY = 4, VZ = 5, AGE = 6, LIFE = 7, S0 = 8, S1 = 9;\nconst R0 = 10, G0 = 11, B0 = 12, R1 = 13, G1 = 14, B1 = 15, A0 = 16, DRAG = 17, GRAV = 18;\nconst HOT = 19, SPIN = 20, TW = 21;\n// Rotation and twinkle phase live in their own arrays (rotation is also a vertex attribute).\n\nconst COL = {\n dust: new Color('#e6d6b8'),\n dustGrey: new Color('#a39b90'),\n smokeDark: new Color('#3a3432'),\n smoke: new Color('#76706b'),\n fireCore: new Color('#fff3b0'),\n fire: new Color('#ffc23a'),\n fireRed: new Color('#e8471c'),\n spark: new Color('#fff6cf'),\n ember: new Color('#ff8a2a'),\n glintWhite: new Color('#fffbe8'),\n gold: new Color('#ffc53a'),\n flash: new Color('#ffe2a6'),\n};\n\n// Point size is a world-space diameter: pixels = size * uScale / depth (uScale synced per frame).\nconst VERT = /* glsl */ `\nuniform float uScale;\nattribute vec4 aColor;\nattribute float aSize;\nattribute float aRot;\nvarying vec4 vColor;\nvarying vec2 vRot;\nvoid main() {\n vec4 mv = modelViewMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * mv;\n gl_PointSize = aColor.a > 0.003 ? min(aSize * uScale / max(-mv.z, 0.5), 1024.0) : 0.0;\n vColor = aColor;\n vRot = vec2(cos(aRot), sin(aRot));\n}\n`;\nconst FRAG = /* glsl */ `\nuniform sampler2D uMap;\nvarying vec4 vColor;\nvarying vec2 vRot;\nvoid main() {\n vec2 uv = gl_PointCoord - 0.5;\n uv = vec2(vRot.x * uv.x - vRot.y * uv.y, vRot.y * uv.x + vRot.x * uv.y) + 0.5;\n float a = texture2D(uMap, uv).a * vColor.a;\n if (a < 0.004) discard;\n gl_FragColor = vec4(vColor.rgb, a);\n #include <encodings_fragment>\n}\n`;\n\nconst rand = (min, max) => min + Math.random() * (max - min);\nconst clampPower = (power) => (Number.isFinite(power) ? Math.min(2.5, Math.max(0.2, power)) : 1);\n\nfunction makeCanvas(size) {\n const canvas = document.createElement('canvas');\n canvas.width = size;\n canvas.height = size;\n return { canvas, ctx: canvas.getContext('2d') };\n}\n\n// Soft round dot (fire, flash).\nfunction softDot(size = 64) {\n const { canvas, ctx } = makeCanvas(size);\n const c = size / 2;\n const gradient = ctx.createRadialGradient(c, c, 0, c, c, c);\n gradient.addColorStop(0, 'rgba(255,255,255,1)');\n gradient.addColorStop(0.35, 'rgba(255,255,255,.6)');\n gradient.addColorStop(1, 'rgba(255,255,255,0)');\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, size, size);\n return new CanvasTexture(canvas);\n}\n\n// Puffy smoke blob: overlapping soft circles from a fixed seed.\nfunction smokeBlob(size = 64) {\n const { canvas, ctx } = makeCanvas(size);\n const c = size / 2;\n let seed = 11;\n const next = () => { seed = (seed * 16807) % 2147483647; return seed / 2147483647; };\n for (let i = 0; i < 7; i += 1) {\n const angle = next() * Math.PI * 2;\n const offset = next() * c * 0.3;\n const x = c + Math.cos(angle) * offset;\n const y = c + Math.sin(angle) * offset;\n const radius = c * (0.45 + next() * 0.22);\n const gradient = ctx.createRadialGradient(x, y, 0, x, y, radius);\n gradient.addColorStop(0, 'rgba(255,255,255,.55)');\n gradient.addColorStop(0.6, 'rgba(255,255,255,.25)');\n gradient.addColorStop(1, 'rgba(255,255,255,0)');\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, size, size);\n }\n return new CanvasTexture(canvas);\n}\n\n// Four-point star glint: soft core + tapered cross + short diagonals (stays inside the inscribed circle).\nfunction glint(size = 64) {\n const { canvas, ctx } = makeCanvas(size);\n const c = size / 2;\n ctx.globalCompositeOperation = 'lighter';\n const core = ctx.createRadialGradient(c, c, 0, c, c, c * 0.42);\n core.addColorStop(0, 'rgba(255,255,255,1)');\n core.addColorStop(0.3, 'rgba(255,255,255,.55)');\n core.addColorStop(1, 'rgba(255,255,255,0)');\n ctx.fillStyle = core;\n ctx.fillRect(0, 0, size, size);\n const ray = (angle, length, width) => {\n ctx.save();\n ctx.translate(c, c);\n ctx.rotate(angle);\n const gradient = ctx.createLinearGradient(-length, 0, length, 0);\n gradient.addColorStop(0, 'rgba(255,255,255,0)');\n gradient.addColorStop(0.5, 'rgba(255,255,255,1)');\n gradient.addColorStop(1, 'rgba(255,255,255,0)');\n ctx.fillStyle = gradient;\n ctx.beginPath();\n ctx.moveTo(-length, 0);\n ctx.lineTo(0, -width);\n ctx.lineTo(length, 0);\n ctx.lineTo(0, width);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n };\n ray(0, c * 0.94, size * 0.05);\n ray(Math.PI / 2, c * 0.94, size * 0.05);\n ray(Math.PI / 4, c * 0.5, size * 0.03);\n ray(-Math.PI / 4, c * 0.5, size * 0.03);\n return new CanvasTexture(canvas);\n}\n\n// Reusable emit spec: emitters mutate it, batch.emit() copies it into the pool.\nconst spec = {\n x: 0, y: 0, z: 0, vx: 0, vy: 0, vz: 0, life: 1, delay: 0, s0: 1, s1: 1, c0: COL.dust, c1: COL.dust,\n shade: 1, alpha: 1, drag: 0, grav: 0, hot: 0, rot: 0, spin: 0, twinkle: 0,\n};\nfunction particle(x, y, z) {\n spec.x = x; spec.y = y; spec.z = z;\n spec.vx = 0; spec.vy = 0; spec.vz = 0;\n spec.life = 1; spec.delay = 0; spec.s0 = 1; spec.s1 = 1;\n spec.shade = 1; spec.alpha = 1; spec.drag = 0; spec.grav = 0; spec.hot = 0;\n spec.rot = Math.random() * Math.PI * 2; spec.spin = 0; spec.twinkle = 0;\n return spec;\n}\n\n/** Fixed-capacity Points pool; when full the oldest slot (ring cursor) is overwritten. */\nfunction createBatch(cap, { map, additive, scale, renderOrder, fadeIn }) {\n const data = new Float32Array(cap * STRIDE);\n const phase = new Float32Array(cap);\n const pos = new Float32Array(cap * 3);\n const col = new Float32Array(cap * 4);\n const size = new Float32Array(cap);\n const rot = new Float32Array(cap);\n const geometry = new BufferGeometry();\n const attribute = (array, itemSize) => new BufferAttribute(array, itemSize).setUsage(DynamicDrawUsage);\n geometry.setAttribute('position', attribute(pos, 3));\n geometry.setAttribute('aColor', attribute(col, 4));\n geometry.setAttribute('aSize', attribute(size, 1));\n geometry.setAttribute('aRot', attribute(rot, 1));\n geometry.setDrawRange(0, 0);\n const material = new ShaderMaterial({\n uniforms: { uScale: scale, uMap: { value: map } },\n vertexShader: VERT,\n fragmentShader: FRAG,\n transparent: true,\n depthWrite: false,\n blending: additive ? AdditiveBlending : NormalBlending,\n });\n const points = new Points(geometry, material);\n points.frustumCulled = false;\n points.visible = false;\n points.renderOrder = renderOrder;\n const attributes = [geometry.attributes.position, geometry.attributes.aColor, geometry.attributes.aSize, geometry.attributes.aRot];\n const itemSizes = attributes.map((entry) => entry.itemSize);\n let count = 0;\n let cursor = 0;\n\n return {\n points,\n emit(p) {\n let i;\n if (count < cap) { i = count; count += 1; } else { i = cursor; cursor = (cursor + 1) % cap; }\n const o = i * STRIDE;\n data[o + PX] = p.x; data[o + PY] = p.y; data[o + PZ] = p.z;\n data[o + VX] = p.vx; data[o + VY] = p.vy; data[o + VZ] = p.vz;\n data[o + AGE] = -p.delay; data[o + LIFE] = p.life;\n data[o + S0] = p.s0; data[o + S1] = p.s1;\n data[o + R0] = p.c0.r * p.shade; data[o + G0] = p.c0.g * p.shade; data[o + B0] = p.c0.b * p.shade;\n data[o + R1] = p.c1.r * p.shade; data[o + G1] = p.c1.g * p.shade; data[o + B1] = p.c1.b * p.shade;\n data[o + A0] = p.alpha; data[o + DRAG] = p.drag; data[o + GRAV] = p.grav;\n data[o + HOT] = p.hot; data[o + SPIN] = p.spin; data[o + TW] = p.twinkle;\n phase[i] = Math.random() * Math.PI * 2;\n rot[i] = p.rot;\n // Hidden until the first update positions it.\n col[i * 4 + 3] = 0;\n },\n update(dt) {\n let i = 0;\n while (i < count) {\n const o = i * STRIDE;\n const age = data[o + AGE] + dt;\n const life = data[o + LIFE];\n if (age >= life) {\n // Swap-remove keeps the live range dense.\n count -= 1;\n if (i !== count) {\n data.copyWithin(o, count * STRIDE, count * STRIDE + STRIDE);\n phase[i] = phase[count];\n rot[i] = rot[count];\n }\n continue;\n }\n data[o + AGE] = age;\n const p3 = i * 3;\n const p4 = i * 4;\n if (age < 0) {\n // Delayed spawn: parked and invisible.\n pos[p3] = data[o + PX]; pos[p3 + 1] = data[o + PY]; pos[p3 + 2] = data[o + PZ];\n col[p4 + 3] = 0;\n size[i] = 0;\n i += 1;\n continue;\n }\n const damp = Math.exp(-data[o + DRAG] * dt);\n data[o + VX] *= damp;\n data[o + VY] = data[o + VY] * damp - data[o + GRAV] * dt;\n data[o + VZ] *= damp;\n data[o + PX] += data[o + VX] * dt;\n data[o + PY] += data[o + VY] * dt;\n data[o + PZ] += data[o + VZ] * dt;\n rot[i] += data[o + SPIN] * dt;\n\n const k = age / life;\n const t = k < 0.7 ? k / 0.7 : 1;\n const blend = t * t * (3 - 2 * t);\n const inv = 1 - k;\n const hot = 1 + data[o + HOT] * inv * inv * inv;\n pos[p3] = data[o + PX]; pos[p3 + 1] = data[o + PY]; pos[p3 + 2] = data[o + PZ];\n col[p4] = (data[o + R0] + (data[o + R1] - data[o + R0]) * blend) * hot;\n col[p4 + 1] = (data[o + G0] + (data[o + G1] - data[o + G0]) * blend) * hot;\n col[p4 + 2] = (data[o + B0] + (data[o + B1] - data[o + B0]) * blend) * hot;\n const fin = k < fadeIn ? k / fadeIn : 1;\n const fout = k > 0.5 ? inv * 2 : 1;\n const tw = data[o + TW] > 0 ? 0.35 + 0.65 * (0.5 + 0.5 * Math.sin(age * data[o + TW] + phase[i])) : 1;\n col[p4 + 3] = data[o + A0] * fin * fout * tw;\n size[i] = data[o + S0] + (data[o + S1] - data[o + S0]) * (1 - inv * inv);\n i += 1;\n }\n geometry.setDrawRange(0, count);\n points.visible = count > 0;\n if (count > 0) {\n for (let a = 0; a < attributes.length; a += 1) {\n attributes[a].updateRange.offset = 0;\n attributes[a].updateRange.count = count * itemSizes[a];\n attributes[a].needsUpdate = true;\n }\n }\n },\n dispose() {\n geometry.dispose();\n material.dispose();\n },\n };\n}\n\nexport function createAvalancheFx(scene, { lowPower = false } = {}) {\n const k = lowPower ? 0.5 : 1;\n const n = (base, power, min = 1) => Math.max(min, Math.round(base * power * k));\n\n const dot = softDot(64);\n const blob = smokeBlob(64);\n const star = glint(64);\n\n // Shared world-to-pixel factor: drawingBufferHeight / 2 * projection[5].\n const scale = { value: 600 };\n const bufferSize = new Vector2();\n const syncScale = (renderer, _scene, camera) => {\n renderer.getDrawingBufferSize(bufferSize);\n scale.value = bufferSize.y * 0.5 * camera.projectionMatrix.elements[5];\n };\n\n const smoke = createBatch(Math.round(360 * k), { map: blob, additive: false, scale, renderOrder: 20, fadeIn: 0.12 });\n const fire = createBatch(Math.round(260 * k), { map: dot, additive: true, scale, renderOrder: 21, fadeIn: 0.05 });\n const glints = createBatch(Math.round(240 * k), { map: star, additive: true, scale, renderOrder: 22, fadeIn: 0.08 });\n const batches = [smoke, fire, glints];\n const group = new Group();\n group.name = 'avalanche-fx';\n batches.forEach((batch) => {\n batch.points.onBeforeRender = syncScale;\n group.add(batch.points);\n });\n\n // Flash sprites: short additive pops (Sprite geometry is shared by three, never disposed here).\n const flashes = Array.from({ length: lowPower ? 2 : 4 }, () => {\n const sprite = new Sprite(new SpriteMaterial({\n map: dot, color: COL.flash, blending: AdditiveBlending, transparent: true, depthWrite: false,\n }));\n sprite.visible = false;\n sprite.renderOrder = 23;\n sprite.frustumCulled = false;\n group.add(sprite);\n return { sprite, t: 0, dur: 0.2, size: 1 };\n });\n let flashCursor = 0;\n scene.add(group);\n let disposed = false;\n\n function flash(x, y, z, size, dur) {\n const entry = flashes[flashCursor];\n flashCursor = (flashCursor + 1) % flashes.length;\n entry.t = 0;\n entry.dur = dur;\n entry.size = size;\n entry.sprite.position.set(x, y, z);\n entry.sprite.scale.setScalar(size * 0.55);\n entry.sprite.material.opacity = 1;\n entry.sprite.visible = true;\n }\n\n // Ground dust ring for a landing car/tank (~0.6 s).\n function puff(x, y, z, power = 1) {\n if (disposed) return;\n const p = clampPower(power);\n const grow = 0.7 + 0.3 * p;\n const ring = n(18, p, 4);\n for (let i = 0; i < ring; i += 1) {\n const angle = (i / ring) * Math.PI * 2 + rand(-0.15, 0.15);\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const r0 = 0.3 * grow;\n const speed = rand(2.2, 3.8) * grow;\n const s = particle(x + cos * r0, y + rand(0.05, 0.2), z + sin * r0 * 0.6);\n s.vx = cos * speed; s.vy = rand(0.3, 1.1); s.vz = sin * speed * 0.6;\n s.life = rand(0.45, 0.7);\n s.s0 = rand(0.3, 0.5) * grow; s.s1 = rand(1.1, 1.6) * grow;\n s.c0 = COL.dust; s.c1 = COL.dustGrey; s.shade = rand(0.88, 1.06);\n s.alpha = rand(0.45, 0.6); s.drag = 3.6; s.grav = -0.6; s.spin = rand(-1.5, 1.5);\n smoke.emit(s);\n }\n // A few slower billows rising from the center.\n const billows = n(5, p, 1);\n for (let i = 0; i < billows; i += 1) {\n const s = particle(x + rand(-0.35, 0.35) * grow, y + 0.15, z + rand(-0.2, 0.2));\n s.vx = rand(-0.5, 0.5); s.vy = rand(1, 1.8) * grow; s.vz = rand(-0.3, 0.3);\n s.life = rand(0.5, 0.65);\n s.s0 = 0.5 * grow; s.s1 = rand(1.3, 1.8) * grow;\n s.c0 = COL.dust; s.c1 = COL.dustGrey; s.shade = rand(0.9, 1.04);\n s.alpha = 0.42; s.drag = 2.4; s.grav = -0.4; s.spin = rand(-1, 1);\n smoke.emit(s);\n }\n }\n\n // Golden twinkling glints for coins/money (~0.5 s).\n function sparkle(x, y, z, power = 1) {\n if (disposed) return;\n const p = clampPower(power);\n const count = n(10, p, 2);\n for (let i = 0; i < count; i += 1) {\n const s = particle(x + rand(-0.3, 0.3), y + rand(-0.2, 0.3), z + rand(-0.2, 0.3));\n const angle = Math.random() * Math.PI * 2;\n const speed = rand(1.5, 3.5) * (0.6 + 0.4 * p);\n s.vx = Math.cos(angle) * speed; s.vy = Math.sin(angle) * speed * 0.8 + 1.2; s.vz = rand(-1, 1) * speed * 0.5;\n s.life = rand(0.35, 0.6); s.delay = rand(0, 0.08);\n s.s0 = rand(0.35, 0.6); s.s1 = 0.08;\n s.c0 = COL.glintWhite; s.c1 = COL.gold; s.alpha = 1; s.hot = 0.4;\n s.drag = 2.6; s.grav = 2.5; s.spin = rand(-6, 6); s.twinkle = rand(24, 40);\n glints.emit(s);\n }\n // Central \"ping\" star.\n const s = particle(x, y + 0.1, z + 0.2);\n s.life = 0.28; s.s0 = 0.9 * (0.7 + 0.3 * p); s.s1 = 0.25;\n s.c0 = COL.glintWhite; s.c1 = COL.gold; s.alpha = 1; s.rot = 0; s.spin = 3;\n glints.emit(s);\n }\n\n // Mini cartoon explosion: flash + fireball + sparks + dark smoke column (~1 s).\n function blast(x, y, z, power = 1) {\n if (disposed) return;\n const p = clampPower(power);\n flash(x, y + 0.5 * p, z + 0.4, 3.4 * p, 0.2);\n const fireCount = n(26, p, 6);\n for (let i = 0; i < fireCount; i += 1) {\n const theta = Math.random() * Math.PI * 2;\n const phi = Math.acos(Math.random() * 0.9);\n const speed = rand(2.5, 6) * p;\n const s = particle(x + rand(-0.3, 0.3), y + 0.3, z + rand(-0.3, 0.3));\n s.vx = Math.cos(theta) * Math.sin(phi) * speed;\n s.vy = Math.cos(phi) * speed * 0.9 + 1.5;\n s.vz = Math.sin(theta) * Math.sin(phi) * speed * 0.6;\n s.life = rand(0.35, 0.6);\n s.s0 = rand(0.5, 0.75) * p; s.s1 = rand(1.2, 1.6) * p;\n s.c0 = Math.random() < 0.3 ? COL.fireCore : COL.fire; s.c1 = COL.fireRed;\n s.alpha = 0.9; s.drag = 4; s.grav = -1; s.hot = 1.4; s.spin = rand(-2, 2);\n fire.emit(s);\n }\n const sparkCount = n(12, p, 3);\n for (let i = 0; i < sparkCount; i += 1) {\n const theta = Math.random() * Math.PI * 2;\n const speed = rand(6, 11) * p;\n const s = particle(x, y + 0.4, z);\n s.vx = Math.cos(theta) * speed * 0.7; s.vy = rand(4, 9) * p; s.vz = Math.sin(theta) * speed * 0.4;\n s.life = rand(0.4, 0.7);\n s.s0 = 0.2; s.s1 = 0.06;\n s.c0 = COL.spark; s.c1 = COL.ember; s.alpha = 1; s.drag = 1; s.grav = 14; s.hot = 1;\n fire.emit(s);\n }\n const smokeCount = n(14, p, 4);\n for (let i = 0; i < smokeCount; i += 1) {\n const s = particle(x + rand(-0.6, 0.6) * p, y + rand(0.3, 0.9) * p, z + rand(-0.4, 0.4));\n s.vx = rand(-1, 1) * p; s.vy = rand(1.6, 3) * p; s.vz = rand(-0.5, 0.5);\n s.life = rand(0.75, 1); s.delay = rand(0.02, 0.12);\n s.s0 = rand(0.6, 0.8) * p; s.s1 = rand(1.9, 2.5) * p;\n s.c0 = COL.smokeDark; s.c1 = COL.smoke; s.shade = rand(0.85, 1.1);\n s.alpha = rand(0.55, 0.7); s.drag = 1.3; s.grav = -0.5; s.spin = rand(-1.2, 1.2);\n smoke.emit(s);\n }\n }\n\n function update(dt) {\n if (disposed) return;\n const step = Math.min(Math.max(dt || 0, 0), 0.1);\n for (let b = 0; b < batches.length; b += 1) batches[b].update(step);\n for (let f = 0; f < flashes.length; f += 1) {\n const entry = flashes[f];\n if (!entry.sprite.visible) continue;\n entry.t += step;\n const t = entry.t / entry.dur;\n if (t >= 1) { entry.sprite.visible = false; continue; }\n entry.sprite.material.opacity = (1 - t) * (1 - t);\n entry.sprite.scale.setScalar(entry.size * (0.55 + 0.65 * t));\n }\n }\n\n function dispose() {\n if (disposed) return;\n disposed = true;\n scene.remove(group);\n batches.forEach((batch) => batch.dispose());\n flashes.forEach(({ sprite }) => sprite.material.dispose());\n group.clear();\n dot.dispose();\n blob.dispose();\n star.dispose();\n }\n\n return { puff, sparkle, blast, update, dispose };\n}\n"],"mappings":"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"}
|