melonjs 20.2.0 → 20.3.0

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.
Files changed (140) hide show
  1. package/README.md +86 -8
  2. package/build/application/settings.d.ts +3 -2
  3. package/build/application/settings.d.ts.map +1 -1
  4. package/build/audio/audio.d.ts +2 -2
  5. package/build/audio/audio.d.ts.map +1 -1
  6. package/build/audio/backend/buffer.d.ts +26 -0
  7. package/build/audio/backend/buffer.d.ts.map +1 -0
  8. package/build/audio/backend/cache.d.ts +2 -0
  9. package/build/audio/backend/cache.d.ts.map +1 -0
  10. package/build/audio/backend/core.d.ts +24 -0
  11. package/build/audio/backend/core.d.ts.map +1 -0
  12. package/build/audio/backend/engine.d.ts +54 -0
  13. package/build/audio/backend/engine.d.ts.map +1 -0
  14. package/build/audio/backend/sound.d.ts +79 -0
  15. package/build/audio/backend/sound.d.ts.map +1 -0
  16. package/build/audio/backend/spatial.d.ts +191 -0
  17. package/build/audio/backend/spatial.d.ts.map +1 -0
  18. package/build/audio/backend/types.d.ts +97 -0
  19. package/build/audio/backend/types.d.ts.map +1 -0
  20. package/build/audio/backend/voice.d.ts +33 -0
  21. package/build/audio/backend/voice.d.ts.map +1 -0
  22. package/build/audio/playback.d.ts +49 -4
  23. package/build/audio/playback.d.ts.map +1 -1
  24. package/build/audio/{backend.d.ts → state.d.ts} +13 -11
  25. package/build/audio/state.d.ts.map +1 -0
  26. package/build/audio/types.d.ts +93 -1
  27. package/build/audio/types.d.ts.map +1 -1
  28. package/build/camera/camera3d.d.ts +5 -5
  29. package/build/const.d.ts +2 -2
  30. package/build/index.d.ts.map +1 -1
  31. package/build/index.js +8793 -10171
  32. package/build/index.js.map +4 -4
  33. package/build/input/input.d.ts +19 -0
  34. package/build/input/input.d.ts.map +1 -1
  35. package/build/lang/deprecated.d.ts +4 -2
  36. package/build/lang/deprecated.d.ts.map +1 -1
  37. package/build/level/gltf/GLTFScene.d.ts +12 -0
  38. package/build/level/gltf/GLTFScene.d.ts.map +1 -1
  39. package/build/level/tiled/TMXObjectFactory.d.ts.map +1 -1
  40. package/build/loader/loader.d.ts +4 -40
  41. package/build/loader/loader.d.ts.map +1 -1
  42. package/build/loader/parsers/audio.d.ts +31 -0
  43. package/build/loader/parsers/audio.d.ts.map +1 -0
  44. package/build/loader/parsers/shader.d.ts.map +1 -1
  45. package/build/physics/adapter.d.ts +3 -3
  46. package/build/physics/builtin/body.d.ts +23 -24
  47. package/build/physics/builtin/body.d.ts.map +1 -1
  48. package/build/physics/builtin/detector.d.ts +1 -1
  49. package/build/plugin/plugin.d.ts +9 -1
  50. package/build/plugin/plugin.d.ts.map +1 -1
  51. package/build/polyfill/index.d.ts +1 -4
  52. package/build/polyfill/index.d.ts.map +1 -1
  53. package/build/renderable/mesh.d.ts +16 -0
  54. package/build/renderable/mesh.d.ts.map +1 -1
  55. package/build/renderable/renderable.d.ts +16 -10
  56. package/build/renderable/renderable.d.ts.map +1 -1
  57. package/build/renderable/sprite.d.ts +7 -7
  58. package/build/renderable/sprite.d.ts.map +1 -1
  59. package/build/state/stage.d.ts +4 -2
  60. package/build/state/stage.d.ts.map +1 -1
  61. package/build/system/event.d.ts +1 -1
  62. package/build/system/platform.d.ts +21 -1
  63. package/build/system/platform.d.ts.map +1 -1
  64. package/build/utils/fetchdata.d.ts.map +1 -0
  65. package/build/video/blendmodes.d.ts +1 -1
  66. package/build/video/canvas/canvas_renderer.d.ts +5 -2
  67. package/build/video/canvas/canvas_renderer.d.ts.map +1 -1
  68. package/build/video/effects/blur.d.ts +4 -4
  69. package/build/video/effects/blur.d.ts.map +1 -1
  70. package/build/video/effects/chromaticAberration.d.ts +5 -5
  71. package/build/video/effects/chromaticAberration.d.ts.map +1 -1
  72. package/build/video/effects/colorMatrix.d.ts +5 -5
  73. package/build/video/effects/colorMatrix.d.ts.map +1 -1
  74. package/build/video/effects/desaturate.d.ts +5 -5
  75. package/build/video/effects/desaturate.d.ts.map +1 -1
  76. package/build/video/effects/dissolve.d.ts +4 -4
  77. package/build/video/effects/dissolve.d.ts.map +1 -1
  78. package/build/video/effects/dropShadow.d.ts +5 -5
  79. package/build/video/effects/dropShadow.d.ts.map +1 -1
  80. package/build/video/effects/flash.d.ts +4 -4
  81. package/build/video/effects/flash.d.ts.map +1 -1
  82. package/build/video/effects/glow.d.ts +5 -5
  83. package/build/video/effects/glow.d.ts.map +1 -1
  84. package/build/video/effects/hologram.d.ts +4 -4
  85. package/build/video/effects/hologram.d.ts.map +1 -1
  86. package/build/video/effects/invert.d.ts +5 -5
  87. package/build/video/effects/invert.d.ts.map +1 -1
  88. package/build/video/effects/outline.d.ts +6 -6
  89. package/build/video/effects/outline.d.ts.map +1 -1
  90. package/build/video/effects/pixelate.d.ts +4 -4
  91. package/build/video/effects/pixelate.d.ts.map +1 -1
  92. package/build/video/effects/radialGradient.d.ts +2 -2
  93. package/build/video/effects/scanline.d.ts +6 -6
  94. package/build/video/effects/scanline.d.ts.map +1 -1
  95. package/build/video/effects/sepia.d.ts +5 -5
  96. package/build/video/effects/sepia.d.ts.map +1 -1
  97. package/build/video/effects/shadereffect.d.ts +12 -10
  98. package/build/video/effects/shadereffect.d.ts.map +1 -1
  99. package/build/video/effects/shine.d.ts +3 -3
  100. package/build/video/effects/shine.d.ts.map +1 -1
  101. package/build/video/effects/tintPulse.d.ts +4 -4
  102. package/build/video/effects/tintPulse.d.ts.map +1 -1
  103. package/build/video/effects/vignette.d.ts +6 -6
  104. package/build/video/effects/vignette.d.ts.map +1 -1
  105. package/build/video/effects/wave.d.ts +4 -4
  106. package/build/video/effects/wave.d.ts.map +1 -1
  107. package/build/video/texture/atlas.d.ts +1 -1
  108. package/build/video/webgl/glshader.d.ts +2 -2
  109. package/build/video/webgl/webgl_renderer.d.ts +2 -1
  110. package/build/video/webgl/webgl_renderer.d.ts.map +1 -1
  111. package/build/video/webgpu/webgpu_renderer.d.ts +2 -1
  112. package/build/video/webgpu/webgpu_renderer.d.ts.map +1 -1
  113. package/package.json +5 -9
  114. package/skills/AGENTS.md +67 -0
  115. package/skills/melonjs/SKILL.md +156 -0
  116. package/skills/melonjs-20-migration/SKILL.md +160 -0
  117. package/skills/melonjs-3d/SKILL.md +226 -0
  118. package/skills/melonjs-3d-assets/SKILL.md +239 -0
  119. package/skills/melonjs-audio/SKILL.md +215 -0
  120. package/skills/melonjs-camera-and-drawing/SKILL.md +171 -0
  121. package/skills/melonjs-deployment/SKILL.md +113 -0
  122. package/skills/melonjs-effects-and-shaders/SKILL.md +177 -0
  123. package/skills/melonjs-events/SKILL.md +159 -0
  124. package/skills/melonjs-getting-started/SKILL.md +183 -0
  125. package/skills/melonjs-input/SKILL.md +166 -0
  126. package/skills/melonjs-lighting/SKILL.md +139 -0
  127. package/skills/melonjs-loading-assets/SKILL.md +157 -0
  128. package/skills/melonjs-particles-and-trails/SKILL.md +136 -0
  129. package/skills/melonjs-performance/SKILL.md +178 -0
  130. package/skills/melonjs-physics/SKILL.md +321 -0
  131. package/skills/melonjs-plugins/SKILL.md +191 -0
  132. package/skills/melonjs-renderables/SKILL.md +214 -0
  133. package/skills/melonjs-renderer-backends/SKILL.md +173 -0
  134. package/skills/melonjs-scenes-and-state/SKILL.md +180 -0
  135. package/skills/melonjs-sprites-and-animation/SKILL.md +173 -0
  136. package/skills/melonjs-tilemaps/SKILL.md +193 -0
  137. package/skills/melonjs-ui-and-text/SKILL.md +175 -0
  138. package/build/audio/backend.d.ts.map +0 -1
  139. package/build/loader/parsers/fetchdata.d.ts.map +0 -1
  140. /package/build/{loader/parsers → utils}/fetchdata.d.ts +0 -0
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Configuration options for creating a new Sound instance.
3
+ * @example
4
+ * ```typescript
5
+ * const sound = new Sound({
6
+ * src: ['sound.mp3', 'sound.ogg'],
7
+ * volume: 0.5,
8
+ * autoplay: true,
9
+ * onload: () => console.log('Voice loaded')
10
+ * });
11
+ * ```
12
+ */
13
+ export interface SoundOptions {
14
+ /** Source file(s) for the audio. Can be a string or array of strings for multiple formats. */
15
+ src: string | string[];
16
+ /** Automatically start playback when ready. Default: `false` */
17
+ autoplay?: boolean;
18
+ /** Format(s) of the audio file(s). If not specified, will be extracted from the src URL. */
19
+ format?: string | string[];
20
+ /** Force HTML5 Audio. This should be used for large audio files so that you don't have to wait for the full file to be downloaded and decoded before playing. Default: `false` */
21
+ html5?: boolean;
22
+ /** Set to true to mute the sound. Default: `false` */
23
+ mute?: boolean;
24
+ /** Set to true to automatically loop the sound. Default: `false` */
25
+ loop?: boolean;
26
+ /** The size of the inactive sounds pool. Default: `5` */
27
+ pool?: number;
28
+ /** Automatically begin downloading the audio file when the Sound is initialized. If using HTML5 Audio, you can set this to 'metadata' to only preload the metadata. Default: `true` */
29
+ preload?: boolean | "metadata";
30
+ /** The rate of playback. 0.5 to 4.0, with 1.0 being normal speed. Default: `1.0` */
31
+ rate?: number;
32
+ /** Define a sprite map of sections within the audio file. */
33
+ sprite?: Record<string, [number, number, boolean?]>;
34
+ /** The volume of the sound, from 0.0 to 1.0. Default: `1.0` */
35
+ volume?: number;
36
+ /** Configure fetch options for loading audio files (when using Web Audio). */
37
+ xhr?: {
38
+ /** The HTTP method to use. Default: `'GET'` */
39
+ method?: string;
40
+ /** Custom headers to send with the request. */
41
+ headers?: Record<string, string>;
42
+ /** Whether to send credentials with the request. Default: `false` */
43
+ withCredentials?: boolean;
44
+ };
45
+ /** Fires when the sound finishes playing. */
46
+ onend?: () => void;
47
+ /** Fires when the sound has been faded in/out. */
48
+ onfade?: () => void;
49
+ /** Fires when the sound has been loaded. */
50
+ onload?: () => void;
51
+ /** Fires when the sound is unable to load. */
52
+ onloaderror?: (id: number, msg: string) => void;
53
+ /** Fires when the sound is unable to play. */
54
+ onplayerror?: (id: number, msg: string) => void;
55
+ /** Fires when the sound has been paused. */
56
+ onpause?: () => void;
57
+ /** Fires when the sound begins playing. */
58
+ onplay?: () => void;
59
+ /** Fires when the sound has been stopped. */
60
+ onstop?: () => void;
61
+ /** Fires when the sound has been muted/unmuted. */
62
+ onmute?: () => void;
63
+ /** Fires when the sound's volume has changed. */
64
+ onvolume?: () => void;
65
+ /** Fires when the sound's playback rate has changed. */
66
+ onrate?: () => void;
67
+ /** Fires when the sound's current position has changed. */
68
+ onseek?: () => void;
69
+ /** Fires when the audio has been unlocked (required for some browsers on mobile). */
70
+ onunlock?: () => void;
71
+ }
72
+ /**
73
+ * Type guard to check if a node is an HTMLAudioElement.
74
+ * This specifically excludes HTMLVideoElement by checking for the absence of videoWidth.
75
+ * @param node - The node to check
76
+ * @returns True if the node is an HTMLAudioElement
77
+ * @example
78
+ * ```typescript
79
+ * if (isHTMLAudioElement(node)) {
80
+ * node.volume = 0.5;
81
+ * }
82
+ * ```
83
+ */
84
+ export declare function isHTMLAudioElement(node: HTMLAudioElementWithUnlocked | GainNodeWithBufferSource | null): node is HTMLAudioElementWithUnlocked;
85
+ /**
86
+ * Type guard to check if a node is a GainNode.
87
+ * @param node - The node to check
88
+ * @returns True if the node is a GainNode
89
+ * @example
90
+ * ```typescript
91
+ * if (isGainNode(node)) {
92
+ * node.gain.value = 0.5;
93
+ * }
94
+ * ```
95
+ */
96
+ export declare function isGainNode(node: HTMLAudioElementWithUnlocked | GainNodeWithBufferSource | null): node is GainNodeWithBufferSource;
97
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/audio/backend/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC5B,8FAA8F;IAC9F,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,kLAAkL;IAClL,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oEAAoE;IACpE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uLAAuL;IACvL,OAAO,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC/B,oFAAoF;IACpF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpD,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,GAAG,CAAC,EAAE;QACL,+CAA+C;QAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,+CAA+C;QAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,qEAAqE;QACrE,eAAe,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,8CAA8C;IAC9C,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AA0ED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,4BAA4B,GAAG,wBAAwB,GAAG,IAAI,GAClE,IAAI,IAAI,4BAA4B,CAQtC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CACzB,IAAI,EAAE,4BAA4B,GAAG,wBAAwB,GAAG,IAAI,GAClE,IAAI,IAAI,wBAAwB,CAElC"}
@@ -0,0 +1,33 @@
1
+ import { type Sound } from "./core.ts";
2
+ import { type GainNodeWithBufferSource, type HTMLAudioElementWithUnlocked } from "./types.ts";
3
+ export declare class Voice {
4
+ _parent: Sound;
5
+ _muted: boolean;
6
+ _loop: boolean;
7
+ _volume: number;
8
+ _rate: number;
9
+ _seek: number;
10
+ _paused: boolean;
11
+ _ended: boolean;
12
+ _sprite: string;
13
+ _id: number;
14
+ _node: HTMLAudioElementWithUnlocked | GainNodeWithBufferSource | null;
15
+ _playStart: number;
16
+ _rateSeek: number;
17
+ _errorFn?: (event: Event) => void;
18
+ _loadFn?: (event: Event) => void;
19
+ _endFn?: (event: Event) => void;
20
+ _start?: number;
21
+ _stop?: number;
22
+ _panner?: PannerNode | StereoPannerNode;
23
+ _fadeTo?: number | undefined;
24
+ _interval?: ReturnType<typeof setInterval> | undefined;
25
+ constructor(sound: Sound);
26
+ init(): this;
27
+ create(): this;
28
+ reset(): this;
29
+ _errorListener(): void;
30
+ _loadListener(): void;
31
+ _endListener(): void;
32
+ }
33
+ //# sourceMappingURL=voice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../../src/audio/backend/voice.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EACN,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EAEjC,MAAM,YAAY,CAAC;AAEpB,qBAAa,KAAK;IACjB,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,OAAO,CAAS;IACxB,KAAK,EAAE,OAAO,CAAS;IACvB,OAAO,EAAE,MAAM,CAAK;IACpB,KAAK,EAAE,MAAM,CAAK;IAClB,KAAK,EAAE,MAAM,CAAK;IAClB,OAAO,EAAE,OAAO,CAAQ;IACxB,MAAM,EAAE,OAAO,CAAQ;IACvB,OAAO,EAAE,MAAM,CAAe;IAC9B,GAAG,EAAE,MAAM,CAAK;IAChB,KAAK,EAAE,4BAA4B,GAAG,wBAAwB,GAAG,IAAI,CAAQ;IAC7E,UAAU,EAAE,MAAM,CAAK;IACvB,SAAS,EAAE,MAAM,CAAK;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,SAAS,CAAC;gBAE3C,KAAK,EAAE,KAAK;IAKxB,IAAI,IAAI,IAAI;IAwBZ,MAAM,IAAI,IAAI;IA4Dd,KAAK,IAAI,IAAI;IAkBb,cAAc,IAAI,IAAI;IAUtB,aAAa,IAAI,IAAI;IA+BrB,YAAY,IAAI,IAAI;CAqBpB"}
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * File-based playback — load audio assets, then play / pause / fade /
3
3
  * seek / etc. Every function in this module operates on the shared
4
- * `state.tracks` map exposed from `backend.ts`, so the audio module's
4
+ * `audioState.tracks` map exposed from `backend.ts`, so the audio module's
5
5
  * other surfaces (track helpers, mix, unload) can see the same set of
6
6
  * loaded sounds.
7
7
  */
8
- import type { LoadSettings, PannerAttributes, SoundAsset } from "./types.ts";
8
+ import type { LoadSettings, PannerAttributes, PlayOptions, SoundAsset } from "./types.ts";
9
9
  /**
10
10
  * Load an audio file.
11
11
  *
@@ -28,7 +28,9 @@ export declare function load(sound: SoundAsset, onloadcb?: () => void, onerrorcb
28
28
  /**
29
29
  * Play the specified sound.
30
30
  * @param sound_name - Audio clip name (case-sensitive).
31
- * @param loop - Whether to loop the clip. Defaults to `false`.
31
+ * @param loopOrOptions - Whether to loop the clip (defaults to `false`), or a
32
+ * {@link PlayOptions} object. The object form is the only way to name a
33
+ * sprite region; the boolean form is unchanged.
32
34
  * @param onend - Called when the sound instance ends playing.
33
35
  * @param volume - Playback volume, `0.0..1.0`. Defaults to the current
34
36
  * global volume.
@@ -42,9 +44,11 @@ export declare function load(sound: SoundAsset, onloadcb?: () => void, onerrorcb
42
44
  * me.audio.play("gameover_sfx", false, myFunc);
43
45
  * // play the "gameover_sfx" audio clip at half volume
44
46
  * me.audio.play("gameover_sfx", false, null, 0.5);
47
+ * // play a named region of a sprite sheet, at half volume
48
+ * me.audio.play("sfx", { sprite: "jump", volume: 0.5 });
45
49
  * @category Audio
46
50
  */
47
- export declare function play(sound_name: string, loop?: boolean, onend?: (() => void) | null, volume?: number): number;
51
+ export declare function play(sound_name: string, loopOrOptions?: boolean | PlayOptions, onend?: (() => void) | null, volume?: number): number;
48
52
  /**
49
53
  * Fade a currently playing sound between two volumes.
50
54
  * @param sound_name - Audio clip name (case-sensitive).
@@ -134,4 +138,45 @@ export declare function pause(sound_name: string, id?: number): void;
134
138
  * @category Audio
135
139
  */
136
140
  export declare function resume(sound_name: string, id?: number): void;
141
+ /**
142
+ * Get the duration of an audio clip, in seconds.
143
+ *
144
+ * With no `id`, returns the duration of the whole clip; with one, the duration
145
+ * of the region that instance is playing, which differs when the instance was
146
+ * started from a sprite.
147
+ * @param sound_name - Audio clip name (case-sensitive).
148
+ * @param id - Sound instance ID. Omit for the whole clip.
149
+ * @returns Duration in seconds, or `0` while the clip is still loading.
150
+ * @example
151
+ * const total = me.audio.duration("theme");
152
+ * @category Audio
153
+ */
154
+ export declare function duration(sound_name: string, id?: number): number;
155
+ /**
156
+ * Check whether an audio clip is currently playing.
157
+ *
158
+ * With no `id`, reports whether *any* instance of the clip is playing; with
159
+ * one, only that instance.
160
+ * @param sound_name - Audio clip name (case-sensitive).
161
+ * @param id - Sound instance ID. Omit to ask about the whole group.
162
+ * @returns `true` when playing.
163
+ * @example
164
+ * if (!me.audio.playing("theme")) {
165
+ * me.audio.play("theme", true);
166
+ * }
167
+ * @category Audio
168
+ */
169
+ export declare function playing(sound_name: string, id?: number): boolean;
170
+ /**
171
+ * Get the load state of an audio clip.
172
+ *
173
+ * Useful when a clip was declared with `preload: false`, or to tell "still
174
+ * loading" apart from "loaded but silent".
175
+ * @param sound_name - Audio clip name (case-sensitive).
176
+ * @returns `"unloaded"`, `"loading"` or `"loaded"`.
177
+ * @example
178
+ * if (me.audio.state("theme") === "loaded") { ... }
179
+ * @category Audio
180
+ */
181
+ export declare function state(sound_name: string): "unloaded" | "loading" | "loaded";
137
182
  //# sourceMappingURL=playback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../src/audio/playback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../src/audio/playback.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,17 @@
1
1
  /**
2
- * Audio backend — the shared internal surface every other audio module
3
- * (procedural, playback) builds on. Keeps the Howler reference and the
4
- * cross-module mutable state in one place so the public surface modules
5
- * stay backend-agnostic.
2
+ * Shared audio state — the internal surface every other audio module
3
+ * (procedural, playback) builds on. Holds the cross-module mutable state
4
+ * and the thin wrappers over the backend's global surface, so the public
5
+ * modules stay backend-agnostic.
6
+ *
7
+ * The backend implementation itself lives in `./backend/`.
6
8
  *
7
9
  * Not part of the public `me.audio.*` API — the two getters
8
10
  * `getAudioContext` / `getMasterGain` are re-exported from `audio.ts`
9
11
  * for end users; everything else (the `state` object, `soundLoadError`)
10
12
  * is internal.
11
13
  */
12
- import { Howl } from "howler";
14
+ import type { SpatialSound } from "./backend/spatial.ts";
13
15
  /**
14
16
  * Whether to stop on an audio loading error.
15
17
  *
@@ -41,8 +43,8 @@ export declare function setStopOnAudioError(value: boolean): void;
41
43
  * don't share writes across modules" footgun.
42
44
  *
43
45
  * Fields:
44
- * - `tracks` — loaded Howl instances keyed by logical sound name.
45
- * `Howl | undefined` because missing keys return undefined at runtime
46
+ * - `tracks` — loaded Sound instances keyed by logical sound name.
47
+ * `Sound | undefined` because missing keys return undefined at runtime
46
48
  * even though the type signature wouldn't normally admit it.
47
49
  * - `currentTrackId` — the name of the currently-playing track managed
48
50
  * by the `playTrack` / `stopTrack` helpers.
@@ -53,19 +55,19 @@ export declare function setStopOnAudioError(value: boolean): void;
53
55
  * @ignore
54
56
  */
55
57
  export declare const state: {
56
- tracks: Record<string, Howl | undefined>;
58
+ tracks: Record<string, SpatialSound | undefined>;
57
59
  currentTrackId: string | null;
58
60
  retryCounters: Record<string, number>;
59
61
  audioExts: string[];
60
62
  };
61
63
  /**
62
- * Look up a loaded `Howl` instance by logical name, or throw a
64
+ * Look up a loaded `Sound` instance by logical name, or throw a
63
65
  * uniform "audio clip X does not exist" error if it isn't loaded.
64
66
  * Used by every per-clip helper across `playback.ts` / `audio.ts` so
65
67
  * the error contract stays identical across the whole surface.
66
68
  * @ignore
67
69
  */
68
- export declare function getSoundOrThrow(sound_name: string): Howl;
70
+ export declare function getSoundOrThrow(sound_name: string): SpatialSound;
69
71
  /**
70
72
  * Event listener callback on load error. Retries the load up to 3
71
73
  * times, then either throws or disables audio (depending on the
@@ -137,4 +139,4 @@ export declare function hasCodec(codec: string): boolean;
137
139
  * @ignore
138
140
  */
139
141
  export declare function isAudioAvailable(): boolean;
140
- //# sourceMappingURL=backend.d.ts.map
142
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/audio/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,eAAO,IAAI,gBAAgB,EAAE,OAAc,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAExD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,KAAK;YACH,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;oBAC9B,MAAM,GAAG,IAAI;mBAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;eAC1B,MAAM,EAAE;CACzB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAMhE;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAC1B,YAAY,MAAM,EAClB,aAAa,MAAM,IAAI,EACvB,cAAa,OAAc,KACzB,IAqBF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAOrD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,IAAI,QAAQ,GAAG,IAAI,CAS/C;AAUD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAKvC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
@@ -19,6 +19,49 @@ export interface SoundAsset {
19
19
  * + extension construction.
20
20
  */
21
21
  src: string;
22
+ /**
23
+ * Named regions within a single file, each `[start, duration]` in
24
+ * milliseconds, with an optional third element marking the region as
25
+ * looping. Lets one download carry many effects.
26
+ * @example
27
+ * ```js
28
+ * loader.preload([{
29
+ * type: "audio", name: "sfx", src: "data/sfx/",
30
+ * sprite: { jump: [0, 450], hit: [2000, 250], music: [4000, 12000, true] },
31
+ * }]);
32
+ * // then
33
+ * audio.play("sfx", { sprite: "jump" });
34
+ * ```
35
+ */
36
+ sprite?: Record<string, [number, number] | [number, number, boolean]>;
37
+ /**
38
+ * How many finished instances of this clip are kept around for reuse before
39
+ * being discarded. Defaults to `5`.
40
+ *
41
+ * This does not limit how many instances can play at once — it trades
42
+ * memory against the cost of recreating an instance for a clip that is
43
+ * triggered rapidly.
44
+ */
45
+ pool?: number;
46
+ /** Initial playback rate, `0.5..4.0`. Defaults to `1.0`. */
47
+ rate?: number;
48
+ /** Start muted. Defaults to `false`. */
49
+ mute?: boolean;
50
+ /**
51
+ * Whether to begin downloading on load. `"metadata"` fetches only enough to
52
+ * report duration. Defaults to `true`.
53
+ */
54
+ preload?: boolean | "metadata";
55
+ /**
56
+ * Explicit format hint, for sources whose extension cannot be read from the
57
+ * URL (a blob, or a URL without one).
58
+ */
59
+ format?: string | string[];
60
+ /**
61
+ * Lifecycle callbacks for this clip. Each is optional and fires for every
62
+ * instance of the clip.
63
+ */
64
+ on?: SoundEvents;
22
65
  /** Begin playback immediately on load. Defaults to `false`. */
23
66
  autoplay?: boolean;
24
67
  /** Loop playback when the clip ends. Defaults to `false`. */
@@ -36,7 +79,7 @@ export interface SoundAsset {
36
79
  }
37
80
  /**
38
81
  * Optional settings applied to the audio resource load. The loader
39
- * uses an XHR under the hood (via Howler), so the available knobs
82
+ * uses an XHR under the hood, so the available knobs
40
83
  * mirror what an XHR can be told to do.
41
84
  * @category Audio
42
85
  */
@@ -202,4 +245,53 @@ export interface ToneOptions {
202
245
  */
203
246
  pitchSlide?: number;
204
247
  }
248
+ /**
249
+ * Options accepted by {@link play} in place of the positional `loop` argument.
250
+ *
251
+ * Every field is optional, and the positional form
252
+ * `play(name, loop, onend, volume)` continues to work unchanged.
253
+ * @category Audio
254
+ */
255
+ export interface PlayOptions {
256
+ /**
257
+ * Name of a region declared in the clip's `sprite` map. Omit to play the
258
+ * whole clip.
259
+ */
260
+ sprite?: string | undefined;
261
+ /** Loop playback when the region ends. Defaults to `false`. */
262
+ loop?: boolean | undefined;
263
+ /** Called when this instance finishes playing. */
264
+ onend?: (() => void) | undefined;
265
+ /** Playback volume, `0.0..1.0`. Defaults to the current global volume. */
266
+ volume?: number | undefined;
267
+ }
268
+ /**
269
+ * Lifecycle callbacks accepted by a {@link SoundAsset} under `on`.
270
+ *
271
+ * These fire for the clip as a whole. To react to a single instance, keep the
272
+ * id returned by {@link play}.
273
+ * @category Audio
274
+ */
275
+ export interface SoundEvents {
276
+ /** The clip started playing. */
277
+ play?: (() => void) | undefined;
278
+ /** The clip was paused. */
279
+ pause?: (() => void) | undefined;
280
+ /** The clip was stopped. */
281
+ stop?: (() => void) | undefined;
282
+ /** An instance reached its end. */
283
+ end?: (() => void) | undefined;
284
+ /** A fade finished. */
285
+ fade?: (() => void) | undefined;
286
+ /** The playback position was changed. */
287
+ seek?: (() => void) | undefined;
288
+ /** The playback rate was changed. */
289
+ rate?: (() => void) | undefined;
290
+ /** The volume was changed. */
291
+ volume?: (() => void) | undefined;
292
+ /** The mute state was changed. */
293
+ mute?: (() => void) | undefined;
294
+ /** Audio was unlocked by a user gesture. */
295
+ unlock?: (() => void) | undefined;
296
+ }
205
297
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/audio/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC5B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAChC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IACrC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC3B;;;;OAIG;IACH,IAAI,EAAE,gBAAgB,CAAC;IACvB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,CAAC,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAClC,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B;;;;OAIG;IACH,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/audio/types.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import Frustum, { type FrustumOptions } from "./frustum.ts";
9
9
  /**
10
10
  * A perspective camera that extends {@link Camera2d} with a view
11
11
  * {@link Frustum} (fov / aspect / near / far) and orientation
12
- * (pitch / yaw / roll). Slots into `Stage.cameras` as a drop-in
12
+ * (pitch / yaw). Slots into `Stage.cameras` as a drop-in
13
13
  * replacement for `Camera2d` — inherits the post-effect FBO bracket,
14
14
  * color-matrix, fade / shake / follow plumbing, and screen viewport.
15
15
  *
@@ -29,10 +29,10 @@ import Frustum, { type FrustumOptions } from "./frustum.ts";
29
29
  * on screen (same as Camera2d). Sprite at higher `pos.z` is
30
30
  * farther from the camera and renders smaller. Matches melonJS's
31
31
  * 2D conventions so existing Camera2d code translates directly.
32
- * - **Rotations are extrinsic XYZ.** `pitch` (X axis, look up/down),
33
- * `yaw` (Y axis, look left/right), `roll` (Z axis, screen-plane
34
- * bank — also exposed as `Camera2d.rotation` via Renderable
35
- * inheritance for backward compatibility).
32
+ * - **Rotations are extrinsic XY.** `pitch` (X axis, look up/down) and
33
+ * `yaw` (Y axis, look left/right). There is no roll: the inherited
34
+ * `Camera2d.rotation` is not read by the view transform or the frustum
35
+ * rebuild, so a screen-plane bank has no effect on a 3D camera.
36
36
  * - **Follow offset (PR B scope).** When a target is set,
37
37
  * `followOffset` is applied in **world space**:
38
38
  * `camera.pos = target.pos + followOffset`. Target-rotation-aware
package/build/const.d.ts CHANGED
@@ -40,8 +40,8 @@ export declare const WEBGL = 1;
40
40
  * settles after the adapter handshake; browsers without `navigator.gpu`
41
41
  * skip straight to the synchronous WebGL probe.
42
42
  *
43
- * Note: subsystems that require a GPU backend (Camera3d, Mesh,
44
- * ShaderEffect, Light2d, GPU tilemap) will silently stop working under
43
+ * Note: subsystems that require a GPU backend (Camera3d, ShaderEffect,
44
+ * Light2d normal-map shading, GPU tilemap) will silently stop working under
45
45
  * the terminal Canvas fallback — if your scene depends on any of those,
46
46
  * use {@link WEBGL} (or {@link WEBGPU}) so the failure surfaces at
47
47
  * startup instead of as a black canvas at runtime.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}