@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fx-UZwhOmdl.js","names":["PALETTE","C","PART_ORDER","prep","flat","geometry","paint","color","Color","hex","array","i","Float32BufferAttribute","extrude","q","depth","width","bevel","ExtrudeGeometry","shape","segments","box","w","h","d","BoxGeometry","x","y","z","hw","hh","Shape","cylinder","CylinderGeometry","r","length","axis","profile","points","point","cx","cy","bottom","tilt","addWheels","zc","side","discs","radius","offset","disc","CircleGeometry","parts","coupe","s","muscle","racer","tub","position","taper","SphereGeometry","createMaterials","make","lowPower","MeshLambertMaterial","options","MeshStandardMaterial","standard","MeshBasicMaterial","assemble","merged","name","mergeBufferGeometries","kind","bounds","Box3","center","Vector3","size","materials","physics","createCarModels","palette","pools","STRIDE","PX","PY","PZ","VX","VY","VZ","AGE","LIFE","S0","S1","R0","G0","B0","R1","G1","B1","A0","DRAG","GRAV","HOT","SPIN","TW","COL","VERT","FRAG","rand","min","max","clampPower","power","makeCanvas","canvas","softDot","c","gradient","ctx","CanvasTexture","smokeBlob","seed","next","angle","glint","core","ray","spec","particle","createBatch","data","cap","phase","pos","col","rot","BufferGeometry","attribute","BufferAttribute","itemSize","DynamicDrawUsage","material","ShaderMaterial","scale","map","additive","AdditiveBlending","NormalBlending","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","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","billows","sparkle","blast","fireCount","theta","phi","sparkCount","smokeCount","update","step","b","f","dispose","scene"],"sources":["../../src/effects/avalanche/models/cars.js","../../src/effects/avalanche/fx.js"],"sourcesContent":["// Low-poly toy sports cars for the Avalancha effect: 'car' (coupe), 'car-muscle', 'car-racer'.\n// Each kind is a few merged parts (one InstancedMesh each); only the body takes the palette tint.\n// Local frame: origin at the bbox center, +X front, +Y up, +Z right. No DOM at module scope.\nimport {\n Box3, BoxGeometry, CircleGeometry, Color, CylinderGeometry, ExtrudeGeometry, Float32BufferAttribute,\n MeshBasicMaterial, MeshLambertMaterial, MeshStandardMaterial, Shape, SphereGeometry, Vector3,\n} from 'three';\nimport { mergeBufferGeometries } from 'three/examples/jsm/utils/BufferGeometryUtils.js';\n\nconst PALETTE = ['#ff2b3d', '#ffd23f', '#2f6bff', '#7be22c', '#ff7a1a', '#ff4fb0', '#f5f6f8'];\nconst C = {\n tire: '#1b1c21', rim: '#cfd5de', hub: '#3a3d45', chrome: '#dfe4ec', dark: '#2a2c33', black: '#111216',\n white: '#f4f4f6', head: '#fff2bf', tail: '#ff1f3a',\n};\nconst PART_ORDER = ['body', 'glass', 'wheels', 'trim', 'lights'];\n\n// Non-indexed, uv-less: the common layout mergeBufferGeometries needs.\nfunction prep(geometry) {\n const flat = geometry.index ? geometry.toNonIndexed() : geometry;\n flat.deleteAttribute('uv');\n return flat;\n}\n\nfunction paint(geometry, hex) {\n const flat = prep(geometry);\n const color = new Color(hex);\n const array = new Float32Array(flat.attributes.position.count * 3);\n for (let i = 0; i < array.length; i += 3) color.toArray(array, i);\n flat.setAttribute('color', new Float32BufferAttribute(array, 3));\n return flat;\n}\n\n// Side profile (XY) extruded across Z, centered on z = 0. The bevel grows the outline by `bevel`.\nfunction extrude(shape, width, bevel, q, segments = q.bevel) {\n const depth = Math.max(0.01, width - bevel * 2);\n const geometry = new ExtrudeGeometry(shape, {\n depth, bevelEnabled: true, bevelThickness: bevel, bevelSize: bevel, bevelSegments: segments, curveSegments: q.curve,\n });\n return geometry.translate(0, 0, -depth / 2);\n}\n\n// Chamfered box (plain box on lowPower or when too thin).\nfunction box(q, w, h, d, x, y, z, bevel = 0.025) {\n if (q.low || !bevel || bevel * 2.5 > Math.min(w, h, d)) return new BoxGeometry(w, h, d).translate(x, y, z);\n const hw = w / 2 - bevel;\n const hh = h / 2 - bevel;\n const shape = new Shape();\n shape.moveTo(-hw, -hh);\n shape.lineTo(hw, -hh);\n shape.lineTo(hw, hh);\n shape.lineTo(-hw, hh);\n return extrude(shape, d, bevel, q, 1).translate(x, y, z);\n}\n\nfunction cylinder(r, length, segments, axis, x, y, z) {\n const geometry = new CylinderGeometry(r, r, length, segments);\n if (axis === 'x') geometry.rotateZ(Math.PI / 2);\n else if (axis === 'z') geometry.rotateX(Math.PI / 2);\n return geometry.translate(x, y, z);\n}\n\n// Polygon outline; `arch` entries cut a wheel arch into the bottom edge at y = bottom.\nfunction profile(points) {\n const shape = new Shape();\n points.forEach((point, i) => {\n if (point.arch) {\n const [cx, cy, r, bottom] = point.arch;\n const tilt = Math.asin((cy - bottom) / r);\n // Clockwise over the top of the wheel; absarc adds the joining segment.\n shape.absarc(cx, cy, r, Math.PI + tilt, -tilt, true);\n } else if (point.q) {\n shape.quadraticCurveTo(...point.q);\n } else if (i === 0) shape.moveTo(...point);\n else shape.lineTo(...point);\n });\n return shape;\n}\n\n// Wheels resting on y = 0: rubber tire plus rim (and hub) discs on the outer face.\nfunction addWheels(q, parts, axles) {\n axles.forEach(({ x, r, w, z }) => {\n [-1, 1].forEach((side) => {\n const zc = side * z;\n parts.wheels.push(paint(cylinder(r, w, q.radial, 'z', x, r, zc), C.tire));\n const discs = [[r * 0.6, q.radial, C.rim, 0.004]];\n if (!q.low) discs.push([r * 0.2, 6, C.hub, 0.008]);\n discs.forEach(([radius, segments, color, offset]) => {\n const disc = new CircleGeometry(radius, segments);\n if (side < 0) disc.rotateY(Math.PI);\n parts.wheels.push(paint(disc.translate(x, r, zc + side * (w / 2 + offset)), color));\n });\n });\n });\n}\n\nfunction coupe(q) {\n const parts = { body: [], glass: [], wheels: [], trim: [], lights: [] };\n // Outline before the 0.05 bevel: arches 0.31 → 0.26 visible over 0.22 tires.\n parts.body.push(extrude(profile([\n [-1.06, 0.16], { arch: [-0.72, 0.22, 0.31, 0.16] }, { arch: [0.76, 0.22, 0.31, 0.16] }, [1.1, 0.16],\n { q: [1.15, 0.17, 1.15, 0.26] }, { q: [1.14, 0.38, 1.0, 0.4] }, [0.42, 0.46], [-0.7, 0.48],\n { q: [-1.06, 0.49, -1.1, 0.38] }, [-1.11, 0.22], { q: [-1.11, 0.16, -1.06, 0.16] },\n ]), 0.9, 0.05, q));\n // Fastback greenhouse with a body-colored roof slab.\n parts.glass.push(extrude(profile([[0.4, 0.46], [0.02, 0.74], [-0.42, 0.74], [-0.86, 0.47]]), 0.76, 0.03, q));\n parts.body.push(box(q, 0.5, 0.06, 0.8, -0.2, 0.79, 0, 0.02));\n parts.body.push(box(q, 0.16, 0.05, 0.86, -1.05, 0.6, 0, 0.02));\n if (!q.low) [-1, 1].forEach((s) => parts.body.push(box(q, 0.08, 0.05, 0.07, 0.32, 0.54, s * 0.475, 0)));\n addWheels(q, parts, [{ x: 0.76, r: 0.22, w: 0.2, z: 0.4 }, { x: -0.72, r: 0.22, w: 0.2, z: 0.4 }]);\n parts.trim.push(\n paint(box(q, 0.1, 0.1, 0.92, 1.17, 0.17, 0, 0.03), C.dark),\n paint(box(q, 0.1, 0.1, 0.92, -1.15, 0.18, 0, 0.03), C.dark),\n paint(box(q, 0.04, 0.07, 0.44, 1.2, 0.27, 0, 0), C.black),\n );\n [-1, 1].forEach((s) => {\n parts.trim.push(paint(box(q, 0.05, 0.12, 0.05, -1.03, 0.53, s * 0.3, 0), C.dark));\n if (!q.low) parts.trim.push(paint(cylinder(0.035, 0.1, 8, 'x', -1.17, 0.1, s * 0.22), C.chrome));\n parts.lights.push(\n paint(box(q, 0.06, 0.06, 0.2, 1.18, 0.35, s * 0.29, 0), C.head),\n paint(box(q, 0.04, 0.06, 0.24, -1.17, 0.36, s * 0.27, 0), C.tail),\n );\n });\n return parts;\n}\n\nfunction muscle(q) {\n const parts = { body: [], glass: [], wheels: [], trim: [], lights: [] };\n // Boxy body, long flat hood, short deck; fat rear tires.\n parts.body.push(extrude(profile([\n [-1.12, 0.17], { arch: [-0.74, 0.25, 0.34, 0.17] }, { arch: [0.8, 0.22, 0.31, 0.17] }, [1.15, 0.17],\n [1.18, 0.21], [1.18, 0.44], [1.13, 0.5], [-1.1, 0.5], [-1.15, 0.46], [-1.15, 0.22],\n ]), 0.96, 0.05, q));\n parts.glass.push(extrude(profile([[0.28, 0.47], [-0.02, 0.76], [-0.58, 0.76], [-0.8, 0.47]]), 0.8, 0.03, q));\n parts.body.push(\n box(q, 0.62, 0.06, 0.86, -0.3, 0.8, 0, 0.02),\n box(q, 0.34, 0.08, 0.3, 0.62, 0.58, 0, 0.025), // hood scoop\n box(q, 0.2, 0.05, 1.0, -1.04, 0.75, 0, 0.02), // rear wing\n );\n addWheels(q, parts, [{ x: 0.8, r: 0.22, w: 0.2, z: 0.4 }, { x: -0.74, r: 0.25, w: 0.26, z: 0.39 }]);\n parts.trim.push(\n paint(box(q, 0.06, 0.08, 1.0, 1.23, 0.2, 0, 0.02), C.chrome),\n paint(box(q, 0.06, 0.08, 1.0, -1.23, 0.2, 0, 0.02), C.chrome),\n paint(box(q, 0.03, 0.16, 0.62, 1.235, 0.33, 0, 0), C.black),\n paint(box(q, 0.03, 0.05, 0.22, 0.79, 0.59, 0, 0), C.black),\n );\n [-1, 1].forEach((s) => {\n // Twin racing stripes over hood, roof and deck.\n parts.trim.push(\n paint(box(q, 0.82, 0.012, 0.08, 0.71, 0.553, s * 0.08, 0), C.black),\n paint(box(q, 0.6, 0.012, 0.08, -0.3, 0.833, s * 0.08, 0), C.black),\n paint(box(q, 0.3, 0.012, 0.08, -0.98, 0.553, s * 0.08, 0), C.black),\n paint(box(q, 0.06, 0.18, 0.06, -1.04, 0.64, s * 0.34, 0), C.dark),\n );\n if (!q.low) parts.trim.push(paint(cylinder(0.04, 0.12, 8, 'x', -1.2, 0.12, s * 0.3), C.chrome));\n parts.lights.push(\n paint(cylinder(0.065, 0.03, q.low ? 6 : 10, 'x', 1.245, 0.34, s * 0.37), C.head),\n paint(box(q, 0.03, 0.07, 0.3, -1.215, 0.4, s * 0.26, 0), C.tail),\n );\n });\n return parts;\n}\n\nfunction racer(q) {\n const parts = { body: [], glass: [], wheels: [], trim: [], lights: [] };\n // Open-wheel tub: tapered nose, cockpit, airbox and sloped engine cover.\n const tub = extrude(profile([\n [-0.96, 0.12], [1.14, 0.12], [1.14, 0.17], [0.55, 0.3], [0.2, 0.36], [0.14, 0.4], [-0.16, 0.4],\n [-0.24, 0.54], [-0.4, 0.56], [-0.96, 0.3],\n ]), 0.44, 0.04, q);\n const position = tub.attributes.position;\n for (let i = 0; i < position.count; i += 1) {\n const x = position.getX(i);\n const taper = x > 0.35 ? 1 - 0.55 * Math.min(1, (x - 0.35) / 0.85) : x < -0.5 ? 1 - 0.3 * Math.min(1, (-0.5 - x) / 0.5) : 1;\n position.setZ(i, position.getZ(i) * taper);\n }\n tub.computeVertexNormals();\n parts.body.push(\n tub,\n box(q, 0.6, 0.2, 0.76, -0.12, 0.24, 0, 0.05), // sidepods\n box(q, 0.22, 0.04, 1.0, 1.12, 0.07, 0, 0.015), // front wing\n box(q, 0.24, 0.05, 0.84, -0.98, 0.71, 0, 0.02), // rear wing\n );\n parts.glass.push(box(q, 0.04, 0.045, 0.15, 0.08, 0.49, 0, 0));\n addWheels(q, parts, [{ x: 0.82, r: 0.2, w: 0.17, z: 0.415 }, { x: -0.74, r: 0.24, w: 0.24, z: 0.38 }]);\n parts.trim.push(\n paint(new SphereGeometry(0.12, q.low ? 8 : 10, q.low ? 6 : 8).translate(-0.03, 0.47, 0), C.white),\n paint(box(q, 0.06, 0.36, 0.05, -0.94, 0.52, 0, 0), C.dark),\n paint(box(q, 0.03, 0.06, 0.08, -0.25, 0.56, 0, 0), C.black),\n );\n [-1, 1].forEach((s) => {\n parts.trim.push(\n paint(box(q, 0.24, 0.12, 0.025, 1.14, 0.1, s * 0.5, 0), C.dark),\n paint(box(q, 0.3, 0.24, 0.025, -0.98, 0.64, s * 0.43, 0), C.dark),\n paint(box(q, 0.04, 0.03, 0.2, 0.82, 0.2, s * 0.24, 0), C.dark),\n paint(box(q, 0.04, 0.03, 0.1, -0.74, 0.24, s * 0.23, 0), C.dark),\n );\n });\n if (!q.low) parts.trim.push(paint(cylinder(0.03, 0.08, 8, 'x', -1.0, 0.28, 0), C.chrome));\n parts.lights.push(paint(box(q, 0.03, 0.06, 0.1, -1.015, 0.2, 0, 0), C.tail));\n return parts;\n}\n\nfunction createMaterials(lowPower) {\n const make = (options, standard) => (lowPower ? new MeshLambertMaterial(options) : new MeshStandardMaterial({ ...options, ...standard }));\n return {\n body: make({ color: 0xffffff }, { roughness: 0.28, metalness: 0.3 }),\n glass: make({ color: 0x1c2636 }, { roughness: 0.12, metalness: 0.6 }),\n wheels: make({ color: 0xffffff, vertexColors: true }, { roughness: 0.75, metalness: 0.15 }),\n trim: make({ color: 0xffffff, vertexColors: true }, { roughness: 0.35, metalness: 0.55 }),\n // Unlit so head/tail lights read as glowing.\n lights: new MeshBasicMaterial({ color: 0xffffff, vertexColors: true, toneMapped: false }),\n };\n}\n\n// Merges each part, recenters every part on the car's bbox and sizes the collision sphere.\nfunction assemble(kind, parts, materials, palette, physics) {\n const merged = PART_ORDER.filter((name) => parts[name].length).map((name) => {\n const geometry = mergeBufferGeometries(parts[name].map(prep));\n if (!geometry) throw new Error(`avalanche cars: cannot merge ${kind}.${name}`);\n geometry.computeBoundingBox();\n return { name, geometry };\n });\n const bounds = new Box3();\n merged.forEach(({ geometry }) => bounds.union(geometry.boundingBox));\n const center = bounds.getCenter(new Vector3());\n const size = bounds.getSize(new Vector3());\n merged.forEach(({ geometry }) => {\n geometry.translate(-center.x, -center.y, -center.z);\n geometry.computeBoundingSphere();\n });\n return {\n kind,\n parts: merged.map(({ name, geometry }) => ({ geometry, material: materials[name], tinted: name === 'body' })),\n palette,\n // Equal-volume sphere of the bbox (≈0.78): snugger piles than the full bounding sphere.\n radius: Math.cbrt((size.x * size.y * size.z * 3) / (4 * Math.PI)),\n ...physics,\n };\n}\n\n/** Coupe, muscle car and open-wheel racer. Materials and palette are shared across kinds. */\nexport function createCarModels({ lowPower = false } = {}) {\n const q = { low: lowPower, curve: lowPower ? 3 : 5, bevel: lowPower ? 1 : 2, radial: lowPower ? 8 : 14 };\n const materials = createMaterials(lowPower);\n const palette = PALETTE.map((hex) => new Color(hex));\n const pools = { count: 10, countLow: 6 };\n return [\n assemble('car', coupe(q), materials, palette, { mass: 3, bounce: 0.35, friction: 0.6, drag: 0.04, ...pools }),\n assemble('car-muscle', muscle(q), materials, palette, { mass: 3.4, bounce: 0.3, friction: 0.62, drag: 0.04, ...pools }),\n assemble('car-racer', racer(q), materials, palette, { mass: 2.6, bounce: 0.4, friction: 0.55, drag: 0.05, ...pools }),\n ];\n}\n","// 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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"}
|