@adatechnology/game-animals-three 0.4.5 → 0.4.7

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.
@@ -105,7 +105,7 @@ var GameAnimalsThree = (() => {
105
105
  var BODY_FOLEY_IDS = [...FOOTSTEP_SOUND_IDS, ...LAND_SOUND_IDS, ...BODY_SOUND_IDS];
106
106
  var SWING_LEAD_SECONDS = { punch: 0.07, kick: 0.09, shove: 0, blade: 0.05, blunt: 0.1, chop: 0.11 };
107
107
 
108
- // ../game-audio/dist/chunk-BXUGSOPY.js
108
+ // ../game-audio/dist/chunk-UUWKSG4J.js
109
109
  var DISTANCE_CURVES = {
110
110
  /** The game's `sfx`: `vol / (1 + d² × 0.004)`, cutoff `/ (1 + d × 0.01)`, silent below 0.01 (jogo L62091–62092, L62101). */
111
111
  game_sfx: { model: "inverse_square", k: 4e-3, cutoffK: 0.01, minGain: 0.01 },
@@ -540,6 +540,7 @@ var GameAnimalsThree = (() => {
540
540
  burst: 20,
541
541
  burstSpacing: 0.06
542
542
  };
543
+ var CATALOG = new Map([...SFX_CATALOG, ...SFX_IMPACTS].map((entry) => [entry.id, entry]));
543
544
  var PT = {
544
545
  group: "Som",
545
546
  name: "Painel de som (arquivos e C1\u2013C10)",
@@ -614,9 +615,9 @@ var GameAnimalsThree = (() => {
614
615
  strengths: { light: "leve", medium: "m\xE9dio", heavy: "forte" },
615
616
  states: { file: "A", synth: "S", missing: "F" },
616
617
  criteria: { C1: "C1 Sincronia", C2: "C2 Certo p/ a\xE7\xE3o", C3: "C3 Dist\xE2ncia", C4: "C4 Posi\xE7\xE3o", C5: "C5 Varia\xE7\xE3o", C6: "C6 Volume", C7: "C7 Intensidade", C8: "C8 Cauda", C9: "C9 Rajada", C10: "C10 Escuta" },
617
- metrics: { source: "1 \xB7 Fonte do que tocou", chosen: "1 \xB7 Escolhido", matrix: "2 \xB7 Matriz", last: "\xDAltimo tocado", ab: "4 \xB7 A \xD7 B", blind: "4 \xB7 X", verdicts: "4 \xB7 Prefer\xEAncias", state: "5 \xB7 Medi\xE7\xE3o", count: "1 \xB7 Cat\xE1logo" },
618
+ metrics: { source: "1 \xB7 Fonte do que tocou", chosen: "1 \xB7 Escolhido", matrix: "2 \xB7 Matriz", last: "\xDAltimo tocado", ab: "4 \xB7 A \xD7 B", blind: "4 \xB7 X", verdicts: "4 \xB7 Prefer\xEAncias", state: "5 \xB7 Medi\xE7\xE3o", count: "1 \xB7 Cat\xE1logo", unlicensed: "1 \xB7 Arquivo sem licen\xE7a" },
618
619
  run: { idle: "parada", measuring: "medindo\u2026", done: "pronta", failed: "falhou", recording: "gravando\u2026", recorded: "grava\xE7\xE3o baixada" },
619
- words: { none: "\u2014", hidden: "? (revele)", prefers: "prefere", approved: "aprovado pelo dono" },
620
+ words: { none: "\u2014", hidden: "? (revele)", prefers: "prefere", approved: "aprovado pelo dono", local_file: "arquivo do pacote local", sdk_file: "grava\xE7\xE3o do SDK", synth: "s\xEDntese do SDK" },
620
621
  sources: { sdk: "SDK", user: "seu som", synth: "sintetizado" },
621
622
  probe: "Fonte do som",
622
623
  wall: "Parede (oclus\xE3o)",
@@ -687,9 +688,9 @@ var GameAnimalsThree = (() => {
687
688
  environments: { indoor: "indoor", outdoor: "outdoor" },
688
689
  strengths: { light: "light", medium: "medium", heavy: "heavy" },
689
690
  criteria: { C1: "C1 Sync", C2: "C2 Right sound", C3: "C3 Distance", C4: "C4 Position", C5: "C5 Variation", C6: "C6 Level", C7: "C7 Strength", C8: "C8 Tail", C9: "C9 Burst", C10: "C10 Listening" },
690
- metrics: { source: "1 \xB7 Source of what played", chosen: "1 \xB7 Chosen", matrix: "2 \xB7 Matrix", last: "Last played", ab: "4 \xB7 A \xD7 B", blind: "4 \xB7 X", verdicts: "4 \xB7 Preferences", state: "5 \xB7 Measurement", count: "1 \xB7 Catalogue" },
691
+ metrics: { source: "1 \xB7 Source of what played", chosen: "1 \xB7 Chosen", matrix: "2 \xB7 Matrix", last: "Last played", ab: "4 \xB7 A \xD7 B", blind: "4 \xB7 X", verdicts: "4 \xB7 Preferences", state: "5 \xB7 Measurement", count: "1 \xB7 Catalogue", unlicensed: "1 \xB7 File without licence" },
691
692
  run: { idle: "idle", measuring: "measuring\u2026", done: "done", failed: "failed", recording: "recording\u2026", recorded: "recording downloaded" },
692
- words: { none: "\u2014", hidden: "? (reveal)", prefers: "prefers", approved: "approved by the owner" },
693
+ words: { none: "\u2014", hidden: "? (reveal)", prefers: "prefers", approved: "approved by the owner", local_file: "local pack file", sdk_file: "SDK recording", synth: "SDK synthesis" },
693
694
  sources: { sdk: "SDK", user: "your sound", synth: "synthesized" },
694
695
  probe: "Sound source",
695
696
  wall: "Wall (occlusion)",
@@ -760,6 +761,66 @@ var GameAnimalsThree = (() => {
760
761
  };
761
762
  }
762
763
  var sceneMany = (count, make2) => Array.from({ length: count }, make2);
764
+ var hz = (midi) => 440 * 2 ** ((midi - 69) / 12);
765
+ var layer = (note, beat, wave, level) => {
766
+ const [at, midi, beats] = note;
767
+ const length = beats * beat;
768
+ return {
769
+ at: at * beat,
770
+ duration: length,
771
+ source: { kind: "osc", wave, frequency: { set: hz(midi) } },
772
+ envelope: [[0, 1e-4, "set"], [0.01, level, "linear"], [Math.max(0.02, length * 0.9), level * 0.35, "linear"], [length, 1e-4, "exp", "fixed"]]
773
+ };
774
+ };
775
+ function radioTrack(spec) {
776
+ const beat = 60 / spec.bpm;
777
+ const recipes = Array.from({ length: spec.bars }, (_, bar) => {
778
+ const inBar = (notes) => notes.filter((n) => n[0] >= bar * 4 && n[0] < bar * 4 + 4).map((n) => [n[0] - bar * 4, n[1], n[2]]);
779
+ const layers = [
780
+ ...inBar(spec.bass).map((n) => layer(n, beat, "triangle", 0.16)),
781
+ ...inBar(spec.chords).map((n) => layer(n, beat, "sine", 0.05)),
782
+ ...inBar(spec.melody).map((n) => layer(n, beat, spec.wave, 0.07))
783
+ ];
784
+ return { id: `${spec.id}_${bar}`, bus: "world", duration: 4 * beat, layers, falloff: { model: "none" } };
785
+ });
786
+ return { song: { id: spec.id, barSeconds: 4 * beat, bars: recipes.map((r) => r.id) }, recipes };
787
+ }
788
+ var chord = (bar, root, minor = false) => [[bar * 4, root, 4], [bar * 4, root + (minor ? 3 : 4), 4], [bar * 4, root + 7, 4]];
789
+ var bassLine = (roots, pattern) => roots.flatMap((root, bar) => pattern.map((b) => [bar * 4 + b, root - 12, 0.9]));
790
+ var TRACKS = [
791
+ // a bright pop loop: I–V–vi–IV in C
792
+ radioTrack({
793
+ id: "radio_track_pop",
794
+ bpm: 112,
795
+ bars: 4,
796
+ wave: "square",
797
+ bass: bassLine([48, 55, 57, 53], [0, 1.5, 2, 3]),
798
+ chords: [...chord(0, 60), ...chord(1, 55), ...chord(2, 57, true), ...chord(3, 53)],
799
+ melody: [[0, 76, 1], [1, 74, 0.5], [1.5, 72, 1.5], [4, 74, 1], [5, 76, 1], [6, 79, 2], [8, 76, 1], [9, 74, 1], [10, 72, 2], [12, 72, 1], [13, 74, 1], [14, 72, 2]]
800
+ }),
801
+ // a syncopated loop in A minor, the bass on the off-beats
802
+ radioTrack({
803
+ id: "radio_track_groove",
804
+ bpm: 100,
805
+ bars: 4,
806
+ wave: "triangle",
807
+ bass: bassLine([57, 62, 64, 57], [0, 0.75, 1.5, 2.5, 3.25]),
808
+ chords: [...chord(0, 57, true), ...chord(1, 62, true), ...chord(2, 64), ...chord(3, 57, true)],
809
+ melody: [[0.5, 72, 0.5], [1.25, 76, 0.75], [2.5, 74, 1], [4.5, 77, 0.5], [5.25, 74, 0.75], [6.5, 72, 1.5], [8.5, 71, 0.5], [9.25, 74, 0.75], [10.5, 76, 1.5], [12.5, 72, 0.5], [13.25, 69, 2]]
810
+ }),
811
+ // a slow blues-like loop in F with a swung melody
812
+ radioTrack({
813
+ id: "radio_track_slow",
814
+ bpm: 76,
815
+ bars: 4,
816
+ wave: "sine",
817
+ bass: bassLine([53, 58, 53, 60], [0, 2]),
818
+ chords: [...chord(0, 65), ...chord(1, 58), ...chord(2, 65), ...chord(3, 60)],
819
+ melody: [[0, 72, 1.5], [1.67, 75, 0.33], [2, 77, 2], [4, 74, 1], [5, 72, 1], [6, 70, 2], [8, 72, 1.5], [9.67, 69, 0.33], [10, 65, 2], [12, 67, 1], [13, 70, 1], [14, 72, 2]]
820
+ })
821
+ ];
822
+ var RADIO_TRACKS = TRACKS.map((t) => t.song);
823
+ var RADIO_BANK = { id: "vehicle_radio", sounds: TRACKS.flatMap((t) => t.recipes), loops: [] };
763
824
  var FOLEY_FALLOFF = {
764
825
  model: "inverse_square",
765
826
  k: 0.02,
@@ -1366,11 +1427,11 @@ var GameAnimalsThree = (() => {
1366
1427
  ...s.splash ? [sceneNoise({ type: "bandpass", f: s.splash.f * take.f, f2: s.splash.f2 * take.f, q: 1.4, d: s.splash.d * take.t * weight ** 0.4, vol: s.splash.vol * gait.vol * take.v * weight ** 0.5 })] : []
1367
1428
  ];
1368
1429
  }
1369
- var quieter = (level, layers) => layers.map((layer) => {
1370
- const gain = layer.gain ?? 1;
1371
- if (typeof gain === "number") return { ...layer, gain: gain * level };
1372
- if (Array.isArray(gain)) return { ...layer, gain: [gain[0] * level, gain[1] * level] };
1373
- return layer;
1430
+ var quieter = (level, layers) => layers.map((layer2) => {
1431
+ const gain = layer2.gain ?? 1;
1432
+ if (typeof gain === "number") return { ...layer2, gain: gain * level };
1433
+ if (Array.isArray(gain)) return { ...layer2, gain: [gain[0] * level, gain[1] * level] };
1434
+ return layer2;
1374
1435
  });
1375
1436
  var recipe = (id, layers, falloff, bus = "world") => ({ id, bus, pan: true, layers, falloff, sources: ["sdk"] });
1376
1437
  var takeId = (id, index) => `${id}_${String(index + 1).padStart(2, "0")}`;
@@ -1386,7 +1447,7 @@ var GameAnimalsThree = (() => {
1386
1447
  (take) => quieter(LANDING_LEVEL, [
1387
1448
  // both feet, a hair apart, then the knees taking the weight (a low body thump) and the clothes settling
1388
1449
  ...footLayers(surface, take, GAITS.run, LANDINGS[landing2].weight),
1389
- ...footLayers(surface, { ...take, v: take.v * 0.6 }, GAITS.run, LANDINGS[landing2].weight * 0.6).map((layer) => ({ ...layer, at: (typeof layer.at === "number" ? layer.at : 0) + 0.018 * take.t })),
1450
+ ...footLayers(surface, { ...take, v: take.v * 0.6 }, GAITS.run, LANDINGS[landing2].weight * 0.6).map((layer2) => ({ ...layer2, at: (typeof layer2.at === "number" ? layer2.at : 0) + 0.018 * take.t })),
1390
1451
  sceneTone({ f: 60 * take.f, f2: 38, d: 0.14 * LANDINGS[landing2].weight * take.t, vol: 0.22 * LANDINGS[landing2].weight ** 0.7 * take.v, delay: 0.02 }),
1391
1452
  sceneNoise({ type: "bandpass", f: [1800, 2600], q: 0.8, d: 0.18, vol: LANDINGS[landing2].cloth * take.v, delay: 0.04 })
1392
1453
  ]),
@@ -1432,7 +1493,7 @@ var GameAnimalsThree = (() => {
1432
1493
  fall_damage: (take) => [
1433
1494
  ...BODY.body_fall(take),
1434
1495
  sceneNoise({ type: "highpass", f: 2800, d: 0.02, vol: 0.35 * take.v, delay: 0.01 }),
1435
- ...voice({ f0: 170, f1: 110, d: 0.32, fA: 650, fB: 1150, noise: 0.25, vol: 0.32 })(take).map((layer) => ({ ...layer, at: 0.08 }))
1496
+ ...voice({ f0: 170, f1: 110, d: 0.32, fA: 650, fB: 1150, noise: 0.25, vol: 0.32 })(take).map((layer2) => ({ ...layer2, at: 0.08 }))
1436
1497
  ],
1437
1498
  player_hurt: voice({ f0: 150, f1: 105, d: 0.26, fA: 620, fB: 1100, noise: 0.3, vol: 0.35 }),
1438
1499
  player_breath_run: (take) => [
@@ -1750,7 +1811,7 @@ var GameAnimalsThree = (() => {
1750
1811
  }
1751
1812
  };
1752
1813
 
1753
- // ../game-shapes/dist/chunk-M5N2SHNL.js
1814
+ // ../game-shapes/dist/chunk-FZQTELDQ.js
1754
1815
  function canonicalJson(value) {
1755
1816
  if (value === null) return "null";
1756
1817
  if (typeof value === "number") return Object.is(value, -0) ? "-0" : Number.isFinite(value) ? String(value) : JSON.stringify(String(value));
@@ -2626,17 +2687,19 @@ var GameAnimalsThree = (() => {
2626
2687
  if (p.prevZ) p.prevZ.nextZ = p.nextZ;
2627
2688
  if (p.nextZ) p.nextZ.prevZ = p.prevZ;
2628
2689
  }
2629
- function Node(i, x, y) {
2630
- this.i = i;
2631
- this.x = x;
2632
- this.y = y;
2633
- this.prev = null;
2634
- this.next = null;
2635
- this.z = 0;
2636
- this.prevZ = null;
2637
- this.nextZ = null;
2638
- this.steiner = false;
2639
- }
2690
+ var Node = class {
2691
+ constructor(i, x, y) {
2692
+ this.i = i;
2693
+ this.x = x;
2694
+ this.y = y;
2695
+ this.prev = null;
2696
+ this.next = null;
2697
+ this.z = 0;
2698
+ this.prevZ = null;
2699
+ this.nextZ = null;
2700
+ this.steiner = false;
2701
+ }
2702
+ };
2640
2703
  function signedArea(data, start, end, dim) {
2641
2704
  let sum = 0;
2642
2705
  for (let i = start, j = end - dim; i < end; i += dim) {
@@ -2903,8 +2966,8 @@ var GameAnimalsThree = (() => {
2903
2966
  const face = faces[i];
2904
2967
  f3(face[2] + offset, face[1] + offset, face[0] + offset);
2905
2968
  }
2906
- const layer = steps + bevelSegments * 2;
2907
- offset = vlen * layer;
2969
+ const layer2 = steps + bevelSegments * 2;
2970
+ offset = vlen * layer2;
2908
2971
  for (let i = 0; i < flen; i++) {
2909
2972
  const face = faces[i];
2910
2973
  f3(face[0] + offset, face[1] + offset, face[2] + offset);
@@ -3705,8 +3768,8 @@ uniform mat4 uNodes[${nodes.length}]; attribute float aNodeIndex; attribute vec3
3705
3768
  const isChicken = species.id === "chicken";
3706
3769
  const isLapwing = species.id === "southern_lapwing";
3707
3770
  const flying = clip === "run" && !isChicken;
3708
- const hz = clip === "run" && !flying ? species.runHz : clip === "walk" ? species.walkHz : 0;
3709
- rig.phase += dt * (flying ? isVulture ? 1.1 : 4.5 : hz) * 2 * PI;
3771
+ const hz2 = clip === "run" && !flying ? species.runHz : clip === "walk" ? species.walkHz : 0;
3772
+ rig.phase += dt * (flying ? isVulture ? 1.1 : 4.5 : hz2) * 2 * PI;
3710
3773
  const targetHeight = flying ? rig.size * 1.2 : 0;
3711
3774
  rig.trunk.position.y += (targetHeight - rig.trunk.position.y) * Math.min(1, dt * 3);
3712
3775
  rig.legs.forEach((leg, index) => {
@@ -3769,8 +3832,8 @@ uniform mat4 uNodes[${nodes.length}]; attribute float aNodeIndex; attribute vec3
3769
3832
  if (rig.jaw) rig.jaw.rotation.x = 0.25;
3770
3833
  return;
3771
3834
  }
3772
- const hz = (clip === "run" ? species.runHz : clip === "walk" ? species.walkHz : 0) * (rig.infected ? 1.2 : 1);
3773
- rig.phase += dt * hz * 2 * PI2;
3835
+ const hz2 = (clip === "run" ? species.runHz : clip === "walk" ? species.walkHz : 0) * (rig.infected ? 1.2 : 1);
3836
+ rig.phase += dt * hz2 * 2 * PI2;
3774
3837
  const gait = clip === "run" ? species.gallop ? gaits.gallop : gaits.trot : gaits.walk;
3775
3838
  const amplitude = clip === "run" ? 0.62 : 0.34;
3776
3839
  const flex = clip === "run" ? 1.15 : 0.75;