@datamoc/mw_games 0.42.0 → 0.43.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 (139) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +62 -1
  3. package/REFERENCE.md +57 -5
  4. package/api-surface.json +672 -0
  5. package/data/microgm-essential.PROVENANCE.md +13 -0
  6. package/data/microgm-essential.sf2 +0 -0
  7. package/data/soundfont-catalog.json +8 -0
  8. package/dist/audio/AudioLoader.d.ts +28 -0
  9. package/dist/audio/AudioLoader.d.ts.map +1 -0
  10. package/dist/audio/AudioLoader.js +53 -0
  11. package/dist/audio/AudioLoader.js.map +1 -0
  12. package/dist/audio/Channels.d.ts +1 -0
  13. package/dist/audio/Channels.d.ts.map +1 -1
  14. package/dist/audio/Channels.js +2 -1
  15. package/dist/audio/Channels.js.map +1 -1
  16. package/dist/audio/MidiRender.d.ts +16 -0
  17. package/dist/audio/MidiRender.d.ts.map +1 -1
  18. package/dist/audio/MidiRender.js +21 -0
  19. package/dist/audio/MidiRender.js.map +1 -1
  20. package/dist/audio/MusicPlayer.d.ts +80 -0
  21. package/dist/audio/MusicPlayer.d.ts.map +1 -0
  22. package/dist/audio/MusicPlayer.js +147 -0
  23. package/dist/audio/MusicPlayer.js.map +1 -0
  24. package/dist/audio/SampleDecoder.d.ts +16 -2
  25. package/dist/audio/SampleDecoder.d.ts.map +1 -1
  26. package/dist/audio/SampleDecoder.js +10 -6
  27. package/dist/audio/SampleDecoder.js.map +1 -1
  28. package/dist/audio/Sound.d.ts +2 -0
  29. package/dist/audio/Sound.d.ts.map +1 -1
  30. package/dist/audio/Sound.js +3 -0
  31. package/dist/audio/Sound.js.map +1 -1
  32. package/dist/audio/SoundFont.d.ts +5 -3
  33. package/dist/audio/SoundFont.d.ts.map +1 -1
  34. package/dist/audio/SoundFont.js +10 -8
  35. package/dist/audio/SoundFont.js.map +1 -1
  36. package/dist/audio/Synth.d.ts +1 -1
  37. package/dist/audio/Synth.d.ts.map +1 -1
  38. package/dist/audio/Synth.js +4 -0
  39. package/dist/audio/Synth.js.map +1 -1
  40. package/dist/audio/index.d.ts +6 -2
  41. package/dist/audio/index.d.ts.map +1 -1
  42. package/dist/audio/index.js +3 -1
  43. package/dist/audio/index.js.map +1 -1
  44. package/dist/mw_games.global.js +22 -22
  45. package/dist/mwl/index.d.ts +2 -0
  46. package/dist/mwl/index.d.ts.map +1 -1
  47. package/dist/mwl/index.js +1 -0
  48. package/dist/mwl/index.js.map +1 -1
  49. package/dist/mwl/objects.d.ts +31 -0
  50. package/dist/mwl/objects.d.ts.map +1 -0
  51. package/dist/mwl/objects.js +83 -0
  52. package/dist/mwl/objects.js.map +1 -0
  53. package/dist/mwl/schema.d.ts +1 -1
  54. package/dist/mwl/schema.d.ts.map +1 -1
  55. package/dist/mwl/tables.d.ts +2 -0
  56. package/dist/mwl/tables.d.ts.map +1 -1
  57. package/dist/mwl/tables.js +13 -0
  58. package/dist/mwl/tables.js.map +1 -1
  59. package/dist/physics/XpbdWorld.d.ts +23 -5
  60. package/dist/physics/XpbdWorld.d.ts.map +1 -1
  61. package/dist/physics/XpbdWorld.js +90 -6
  62. package/dist/physics/XpbdWorld.js.map +1 -1
  63. package/dist/testing/index.d.ts +16 -0
  64. package/dist/testing/index.d.ts.map +1 -1
  65. package/dist/testing/index.js +21 -0
  66. package/dist/testing/index.js.map +1 -1
  67. package/dist/three-d/Collision3D.d.ts +46 -2
  68. package/dist/three-d/Collision3D.d.ts.map +1 -1
  69. package/dist/three-d/Collision3D.js +46 -2
  70. package/dist/three-d/Collision3D.js.map +1 -1
  71. package/dist/three-d/Grid.d.ts +12 -1
  72. package/dist/three-d/Grid.d.ts.map +1 -1
  73. package/dist/three-d/Grid.js +12 -1
  74. package/dist/three-d/Grid.js.map +1 -1
  75. package/dist/three-d/Vox.d.ts +13 -1
  76. package/dist/three-d/Vox.d.ts.map +1 -1
  77. package/dist/three-d/Vox.js +13 -1
  78. package/dist/three-d/Vox.js.map +1 -1
  79. package/dist/two-d/Game.d.ts +21 -1
  80. package/dist/two-d/Game.d.ts.map +1 -1
  81. package/dist/two-d/Game.js +73 -6
  82. package/dist/two-d/Game.js.map +1 -1
  83. package/dist/two-d/Scene2D.d.ts +24 -0
  84. package/dist/two-d/Scene2D.d.ts.map +1 -1
  85. package/dist/two-d/Scene2D.js +30 -0
  86. package/dist/two-d/Scene2D.js.map +1 -1
  87. package/dist/two-d/render/SceneTransition.d.ts +272 -0
  88. package/dist/two-d/render/SceneTransition.d.ts.map +1 -0
  89. package/dist/two-d/render/SceneTransition.js +431 -0
  90. package/dist/two-d/render/SceneTransition.js.map +1 -0
  91. package/dist/two-d/render/index.d.ts +2 -0
  92. package/dist/two-d/render/index.d.ts.map +1 -1
  93. package/dist/two-d/render/index.js +1 -0
  94. package/dist/two-d/render/index.js.map +1 -1
  95. package/dist/two-d/ui/Button.d.ts +23 -0
  96. package/dist/two-d/ui/Button.d.ts.map +1 -1
  97. package/dist/two-d/ui/Button.js +37 -0
  98. package/dist/two-d/ui/Button.js.map +1 -1
  99. package/dist/two-d/ui/DropdownView.d.ts +49 -3
  100. package/dist/two-d/ui/DropdownView.d.ts.map +1 -1
  101. package/dist/two-d/ui/DropdownView.js +150 -9
  102. package/dist/two-d/ui/DropdownView.js.map +1 -1
  103. package/dist/two-d/ui/ScrollBox.d.ts +90 -0
  104. package/dist/two-d/ui/ScrollBox.d.ts.map +1 -1
  105. package/dist/two-d/ui/ScrollBox.js +206 -4
  106. package/dist/two-d/ui/ScrollBox.js.map +1 -1
  107. package/dist/two-d/ui/ScrollText.d.ts +122 -0
  108. package/dist/two-d/ui/ScrollText.d.ts.map +1 -0
  109. package/dist/two-d/ui/ScrollText.js +202 -0
  110. package/dist/two-d/ui/ScrollText.js.map +1 -0
  111. package/dist/two-d/ui/Tooltip.d.ts +70 -1
  112. package/dist/two-d/ui/Tooltip.d.ts.map +1 -1
  113. package/dist/two-d/ui/Tooltip.js +115 -3
  114. package/dist/two-d/ui/Tooltip.js.map +1 -1
  115. package/dist/two-d/ui/Window.d.ts +35 -2
  116. package/dist/two-d/ui/Window.d.ts.map +1 -1
  117. package/dist/two-d/ui/Window.js +58 -3
  118. package/dist/two-d/ui/Window.js.map +1 -1
  119. package/dist/two-d/ui/index.d.ts +7 -5
  120. package/dist/two-d/ui/index.d.ts.map +1 -1
  121. package/dist/two-d/ui/index.js +3 -2
  122. package/dist/two-d/ui/index.js.map +1 -1
  123. package/dist/version.d.ts +1 -1
  124. package/dist/version.js +1 -1
  125. package/package.json +7 -3
  126. package/sbom.cdx.json +19 -260
  127. package/tools/browser-driver.mjs +3 -3
  128. package/tools/browser-smoke.mjs +19 -2
  129. package/tools/build-tablebases.mjs +7 -3
  130. package/tools/compile-openings.mjs +7 -3
  131. package/tools/compile-resources.d.mts +2 -0
  132. package/tools/compile-resources.mjs +13 -1
  133. package/tools/emit-page.d.mts +6 -0
  134. package/tools/emit-page.mjs +43 -3
  135. package/tools/find-chrome.mjs +4 -2
  136. package/tools/init.mjs +11 -3
  137. package/tools/play-uci.mjs +9 -5
  138. package/tools/vite.mjs +9 -1
  139. package/tools.md +1 -0
@@ -14,19 +14,49 @@ import type { GridCell3D, GridShape3D } from './Grid.ts';
14
14
  * nothing from here; this module is specifically for the discrete, per-cell elevation grid
15
15
  * `createTileGrid3D` builds columns from, which has no such query at all.
16
16
  */
17
- /** looks up a cell's height by its integer grid coordinate in O(1) rather than scanning `cells` on every query */
17
+ /**
18
+ * looks up a cell's height by its integer grid coordinate in O(1) rather than scanning `cells` on every query
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { buildHeightIndex, heightAt } from '@datamoc/mw_games/3d';
23
+ *
24
+ * const heights = buildHeightIndex([
25
+ * { x: 0, y: 0 },
26
+ * { x: 1, y: 0, height: 2 },
27
+ * ]);
28
+ * console.log(heightAt(heights, 'square', 1.2, 0.1)); // 2
29
+ * ```
30
+ */
18
31
  export declare function buildHeightIndex(cells: readonly GridCell3D[]): Map<string, number>;
19
32
  /**
20
33
  * The integer grid cell nearest world position `(x, z)` - the inverse of `gridPoint3D`.
21
34
  * Nearest-cell rounding, not an exact point-in-hexagon test for the hex shape: consistent
22
35
  * with `rpg.Collision`'s own choice of simple axis sweeps over a full polygon solver, since
23
36
  * every tile a capsule actually stands on is far larger than the rounding error near an edge.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * import { cellAt } from '@datamoc/mw_games/3d';
41
+ *
42
+ * console.log(cellAt('square', 3.4, 1.6, 2)); // { x: 2, y: 1 }
43
+ * ```
24
44
  */
25
45
  export declare function cellAt(shape: GridShape3D, x: number, z: number, tileSize?: number): {
26
46
  x: number;
27
47
  y: number;
28
48
  };
29
- /** a cell's own `height` (grid-height units, before `heightStep` scaling), or `null` for a world position with no cell at all - a hole in the grid, blocking just like a wall would */
49
+ /**
50
+ * a cell's own `height` (grid-height units, before `heightStep` scaling), or `null` for a world position with no cell at all - a hole in the grid, blocking just like a wall would
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * import { buildHeightIndex, heightAt } from '@datamoc/mw_games/3d';
55
+ *
56
+ * const heights = buildHeightIndex([{ x: 0, y: 0, height: 1 }]);
57
+ * console.log(heightAt(heights, 'square', 0, 0), heightAt(heights, 'square', 5, 5)); // 1 null
58
+ * ```
59
+ */
30
60
  export declare function heightAt(index: ReadonlyMap<string, number>, shape: GridShape3D, x: number, z: number, tileSize?: number): number | null;
31
61
  /**
32
62
  * Inputs to `resolveCapsuleAgainstGrid`; `tileSize` (default 1) and `shape` must match the grid the heights were built from.
@@ -56,6 +86,20 @@ export interface CapsuleGridMoveResult {
56
86
  * across both `createTileGrid3D` shapes without hex-edge-specific geometry: exactly the
57
87
  * `resolveAabbAgainstTiles`-style trade-off `rpg.Collision`'s own doc comment already makes,
58
88
  * scaled to a grid that is not always axis-aligned.
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * import { buildHeightIndex, resolveCapsuleAgainstGrid } from '@datamoc/mw_games/3d';
93
+ *
94
+ * const heights = buildHeightIndex([
95
+ * { x: 0, y: 0 },
96
+ * { x: 1, y: 0 },
97
+ * { x: 2, y: 0, height: 3 },
98
+ * ]);
99
+ * //a step of 3 levels is more than the capsule can climb, so it stops on the cell before the column
100
+ * const moved = resolveCapsuleAgainstGrid({ x: 0, z: 0 }, { x: 2, z: 0 }, { shape: 'square', heights, maxStepUp: 1 });
101
+ * console.log(moved.blocked, moved.x < 1.5); // true true
102
+ * ```
59
103
  */
60
104
  export declare function resolveCapsuleAgainstGrid(from: {
61
105
  x: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Collision3D.d.ts","sourceRoot":"","sources":["../../src/three-d/Collision3D.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AAEH,kHAAkH;AAClH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAIlF;AAMD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAOvG;AAED,uLAAuL;AACvL,wBAAgB,QAAQ,CACvB,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,KAAK,EAAE,WAAW,EAClB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,SAAI,GACV,MAAM,GAAG,IAAI,CAIf;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,WAAW,CAAC;IACnB,8BAA8B;IAC9B,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kKAAkK;IAClK,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gIAAgI;IAChI,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wGAAwG;AACxG,MAAM,WAAW,qBAAqB;IACrC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,+FAA+F;IAC/F,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9B,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,OAAO,EAAE,sBAAsB,GAC7B,qBAAqB,CAmBvB"}
1
+ {"version":3,"file":"Collision3D.d.ts","sourceRoot":"","sources":["../../src/three-d/Collision3D.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAIlF;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAOvG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACvB,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,KAAK,EAAE,WAAW,EAClB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,SAAI,GACV,MAAM,GAAG,IAAI,CAIf;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,WAAW,CAAC;IACnB,8BAA8B;IAC9B,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kKAAkK;IAClK,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gIAAgI;IAChI,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wGAAwG;AACxG,MAAM,WAAW,qBAAqB;IACrC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,+FAA+F;IAC/F,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9B,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,OAAO,EAAE,sBAAsB,GAC7B,qBAAqB,CAmBvB"}
@@ -13,7 +13,20 @@
13
13
  * nothing from here; this module is specifically for the discrete, per-cell elevation grid
14
14
  * `createTileGrid3D` builds columns from, which has no such query at all.
15
15
  */
16
- /** looks up a cell's height by its integer grid coordinate in O(1) rather than scanning `cells` on every query */
16
+ /**
17
+ * looks up a cell's height by its integer grid coordinate in O(1) rather than scanning `cells` on every query
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import { buildHeightIndex, heightAt } from '@datamoc/mw_games/3d';
22
+ *
23
+ * const heights = buildHeightIndex([
24
+ * { x: 0, y: 0 },
25
+ * { x: 1, y: 0, height: 2 },
26
+ * ]);
27
+ * console.log(heightAt(heights, 'square', 1.2, 0.1)); // 2
28
+ * ```
29
+ */
17
30
  export function buildHeightIndex(cells) {
18
31
  const index = new Map();
19
32
  for (const cell of cells)
@@ -28,6 +41,13 @@ function cellKey(x, y) {
28
41
  * Nearest-cell rounding, not an exact point-in-hexagon test for the hex shape: consistent
29
42
  * with `rpg.Collision`'s own choice of simple axis sweeps over a full polygon solver, since
30
43
  * every tile a capsule actually stands on is far larger than the rounding error near an edge.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * import { cellAt } from '@datamoc/mw_games/3d';
48
+ *
49
+ * console.log(cellAt('square', 3.4, 1.6, 2)); // { x: 2, y: 1 }
50
+ * ```
31
51
  */
32
52
  export function cellAt(shape, x, z, tileSize = 1) {
33
53
  if (!(tileSize > 0))
@@ -38,7 +58,17 @@ export function cellAt(shape, x, z, tileSize = 1) {
38
58
  const cellY = Math.round(z / (Math.sqrt(3) * tileSize) - (cellX & 1) * 0.5);
39
59
  return { x: cellX, y: cellY };
40
60
  }
41
- /** a cell's own `height` (grid-height units, before `heightStep` scaling), or `null` for a world position with no cell at all - a hole in the grid, blocking just like a wall would */
61
+ /**
62
+ * a cell's own `height` (grid-height units, before `heightStep` scaling), or `null` for a world position with no cell at all - a hole in the grid, blocking just like a wall would
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * import { buildHeightIndex, heightAt } from '@datamoc/mw_games/3d';
67
+ *
68
+ * const heights = buildHeightIndex([{ x: 0, y: 0, height: 1 }]);
69
+ * console.log(heightAt(heights, 'square', 0, 0), heightAt(heights, 'square', 5, 5)); // 1 null
70
+ * ```
71
+ */
42
72
  export function heightAt(index, shape, x, z, tileSize = 1) {
43
73
  const cell = cellAt(shape, x, z, tileSize);
44
74
  const key = cellKey(cell.x, cell.y);
@@ -52,6 +82,20 @@ export function heightAt(index, shape, x, z, tileSize = 1) {
52
82
  * across both `createTileGrid3D` shapes without hex-edge-specific geometry: exactly the
53
83
  * `resolveAabbAgainstTiles`-style trade-off `rpg.Collision`'s own doc comment already makes,
54
84
  * scaled to a grid that is not always axis-aligned.
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * import { buildHeightIndex, resolveCapsuleAgainstGrid } from '@datamoc/mw_games/3d';
89
+ *
90
+ * const heights = buildHeightIndex([
91
+ * { x: 0, y: 0 },
92
+ * { x: 1, y: 0 },
93
+ * { x: 2, y: 0, height: 3 },
94
+ * ]);
95
+ * //a step of 3 levels is more than the capsule can climb, so it stops on the cell before the column
96
+ * const moved = resolveCapsuleAgainstGrid({ x: 0, z: 0 }, { x: 2, z: 0 }, { shape: 'square', heights, maxStepUp: 1 });
97
+ * console.log(moved.blocked, moved.x < 1.5); // true true
98
+ * ```
55
99
  */
56
100
  export function resolveCapsuleAgainstGrid(from, to, options) {
57
101
  const { shape, heights, tileSize = 1, maxStepUp = 0, steps = 8 } = options;
@@ -1 +1 @@
1
- {"version":3,"file":"Collision3D.js","sourceRoot":"","sources":["../../src/three-d/Collision3D.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Collision3D.js","sourceRoot":"","sources":["../../src/three-d/Collision3D.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,17 @@ export interface Point3D {
14
14
  y: number;
15
15
  z: number;
16
16
  }
17
- /** Converts the framework's integer square or odd-q hex coordinate to 3D world space. */
17
+ /**
18
+ * Converts the framework's integer square or odd-q hex coordinate to 3D world space.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { gridPoint3D } from '@datamoc/mw_games/3d';
23
+ *
24
+ * //cell (3, 2), one level up, on a grid of 2-unit tiles with 0.5-unit levels
25
+ * const point = gridPoint3D('square', 3, 2, 2, 1, 0.5);
26
+ * console.log(point); // { x: 6, y: 0.5, z: 4 }
27
+ * ```
28
+ */
18
29
  export declare function gridPoint3D(shape: GridShape3D, x: number, y: number, tileSize?: number, height?: number, heightStep?: number): Point3D;
19
30
  //# sourceMappingURL=Grid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../src/three-d/Grid.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,yCAAyC;AACzC,MAAM,WAAW,OAAO;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED,yFAAyF;AACzF,wBAAgB,WAAW,CAC1B,KAAK,EAAE,WAAW,EAClB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,SAAI,EACZ,MAAM,SAAI,EACV,UAAU,SAAI,GACZ,OAAO,CAQT"}
1
+ {"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../src/three-d/Grid.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,yCAAyC;AACzC,MAAM,WAAW,OAAO;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAC1B,KAAK,EAAE,WAAW,EAClB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,SAAI,EACZ,MAAM,SAAI,EACV,UAAU,SAAI,GACZ,OAAO,CAQT"}
@@ -1,4 +1,15 @@
1
- /** Converts the framework's integer square or odd-q hex coordinate to 3D world space. */
1
+ /**
2
+ * Converts the framework's integer square or odd-q hex coordinate to 3D world space.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import { gridPoint3D } from '@datamoc/mw_games/3d';
7
+ *
8
+ * //cell (3, 2), one level up, on a grid of 2-unit tiles with 0.5-unit levels
9
+ * const point = gridPoint3D('square', 3, 2, 2, 1, 0.5);
10
+ * console.log(point); // { x: 6, y: 0.5, z: 4 }
11
+ * ```
12
+ */
2
13
  export function gridPoint3D(shape, x, y, tileSize = 1, height = 0, heightStep = 1) {
3
14
  if (!(tileSize > 0) || !(heightStep > 0))
4
15
  throw new Error('3D grid sizes must be positive');
@@ -1 +1 @@
1
- {"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../src/three-d/Grid.ts"],"names":[],"mappings":"AAmBA,yFAAyF;AACzF,MAAM,UAAU,WAAW,CAC1B,KAAkB,EAClB,CAAS,EACT,CAAS,EACT,QAAQ,GAAG,CAAC,EACZ,MAAM,GAAG,CAAC,EACV,UAAU,GAAG,CAAC;IAEd,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC5F,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC;IAC5F,OAAO;QACN,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,GAAG;QACrB,CAAC,EAAE,MAAM,GAAG,UAAU;QACtB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ;KAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../src/three-d/Grid.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAC1B,KAAkB,EAClB,CAAS,EACT,CAAS,EACT,QAAQ,GAAG,CAAC,EACZ,MAAM,GAAG,CAAC,EACV,UAAU,GAAG,CAAC;IAEd,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC5F,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC;IAC5F,OAAO;QACN,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,GAAG;QACrB,CAAC,EAAE,MAAM,GAAG,UAAU;QACtB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ;KAChD,CAAC;AACH,CAAC"}
@@ -24,7 +24,19 @@ export interface VoxModel {
24
24
  voxels: readonly Voxel[];
25
25
  palette: Uint32Array;
26
26
  }
27
- /** Reads one MagicaVoxel VOX model, including an optional RGBA palette chunk. */
27
+ /**
28
+ * Reads one MagicaVoxel VOX model, including an optional RGBA palette chunk.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * import { parseVox } from '@datamoc/mw_games/3d';
33
+ *
34
+ * declare const voxBytes: ArrayBuffer;
35
+ *
36
+ * const model = parseVox(voxBytes);
37
+ * console.log(model.size, model.voxels.length);
38
+ * ```
39
+ */
28
40
  export declare function parseVox(data: ArrayBuffer | ArrayBufferView): VoxModel;
29
41
  /** Turns parsed voxels into color-batched Babylon thin instances under one transform node. */
30
42
  export declare function createVoxModel3D(scene: Scene, model: VoxModel, voxelSize?: number): TransformNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Vox.d.ts","sourceRoot":"","sources":["../../src/three-d/Vox.ts"],"names":[],"mappings":"AAIA,OAAO,4CAA4C,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,8CAA8C;AAC9C,MAAM,WAAW,OAAO;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AACD;;GAEG;AACH,MAAM,WAAW,KAAK;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACd;AACD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,WAAW,CAAC;CACrB;AAED,iFAAiF;AACjF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,QAAQ,CAyCtE;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,SAAI,GAAG,aAAa,CAgC5F"}
1
+ {"version":3,"file":"Vox.d.ts","sourceRoot":"","sources":["../../src/three-d/Vox.ts"],"names":[],"mappings":"AAIA,OAAO,4CAA4C,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,8CAA8C;AAC9C,MAAM,WAAW,OAAO;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AACD;;GAEG;AACH,MAAM,WAAW,KAAK;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACd;AACD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,OAAO,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,QAAQ,CAyCtE;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,SAAI,GAAG,aAAa,CAgC5F"}
@@ -4,7 +4,19 @@ import { Matrix } from '@babylonjs/core/Maths/math.vector.js';
4
4
  import { CreateBox } from '@babylonjs/core/Meshes/Builders/boxBuilder.pure.js';
5
5
  import '@babylonjs/core/Meshes/thinInstanceMesh.js';
6
6
  import { TransformNode } from '@babylonjs/core/Meshes/transformNode.js';
7
- /** Reads one MagicaVoxel VOX model, including an optional RGBA palette chunk. */
7
+ /**
8
+ * Reads one MagicaVoxel VOX model, including an optional RGBA palette chunk.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { parseVox } from '@datamoc/mw_games/3d';
13
+ *
14
+ * declare const voxBytes: ArrayBuffer;
15
+ *
16
+ * const model = parseVox(voxBytes);
17
+ * console.log(model.size, model.voxels.length);
18
+ * ```
19
+ */
8
20
  export function parseVox(data) {
9
21
  const bytes = data instanceof ArrayBuffer
10
22
  ? new Uint8Array(data)
@@ -1 +1 @@
1
- {"version":3,"file":"Vox.js","sourceRoot":"","sources":["../../src/three-d/Vox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAC/E,OAAO,4CAA4C,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AA2BxE,iFAAiF;AACjF,MAAM,UAAU,QAAQ,CAAC,IAAmC;IAC3D,MAAM,KAAK,GACV,IAAI,YAAY,WAAW;QAC1B,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;QACtB,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,IAAI,GAAmB,IAAI,CAAC;IAChC,IAAI,MAAM,GAAmB,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,OAAO,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,GAAG,WAAW,CAAC;QAClC,IAAI,GAAG,GAAG,YAAY,GAAG,KAAK,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QACpF,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YACnB,IAAI,WAAW,GAAG,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAChE,IAAI,GAAG;gBACN,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;gBAChC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC;gBACpC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC;aACpC,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,WAAW,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC3E,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBACnD,MAAM,EAAE,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;gBACnC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACnF,CAAC,CAAC,CAAC;QACJ,CAAC;aAAM,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,WAAW,GAAG,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE;gBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACtG,CAAC;QACD,MAAM,GAAG,GAAG,CAAC;IACd,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,gBAAgB,CAAC,KAAY,EAAE,KAAe,EAAE,SAAS,GAAG,CAAC;IAC5E,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QACrE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,SAAS,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/D,QAAQ,CAAC,YAAY,GAAG,IAAI,MAAM,CACjC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,EACnB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAC1B,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAC3B,CAAC;QACF,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAC9C,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACtD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,WAAW,CAC5F,QAAQ,EACR,KAAK,GAAG,EAAE,CACV,CAAC;QACH,CAAC;QACD,GAAG,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,IAAI,CAAC,KAAiB,EAAE,MAAc;IAC9C,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,cAAc;IACtB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC;IACpE,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"Vox.js","sourceRoot":"","sources":["../../src/three-d/Vox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAC/E,OAAO,4CAA4C,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AA2BxE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAmC;IAC3D,MAAM,KAAK,GACV,IAAI,YAAY,WAAW;QAC1B,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;QACtB,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,IAAI,GAAmB,IAAI,CAAC;IAChC,IAAI,MAAM,GAAmB,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,OAAO,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,GAAG,WAAW,CAAC;QAClC,IAAI,GAAG,GAAG,YAAY,GAAG,KAAK,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QACpF,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YACnB,IAAI,WAAW,GAAG,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAChE,IAAI,GAAG;gBACN,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;gBAChC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC;gBACpC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC;aACpC,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,WAAW,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC3E,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBACnD,MAAM,EAAE,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;gBACnC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACnF,CAAC,CAAC,CAAC;QACJ,CAAC;aAAM,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,WAAW,GAAG,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE;gBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACtG,CAAC;QACD,MAAM,GAAG,GAAG,CAAC;IACd,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,gBAAgB,CAAC,KAAY,EAAE,KAAe,EAAE,SAAS,GAAG,CAAC;IAC5E,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QACrE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,SAAS,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/D,QAAQ,CAAC,YAAY,GAAG,IAAI,MAAM,CACjC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,EACnB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAC1B,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAC3B,CAAC;QACF,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAC9C,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACtD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,WAAW,CAC5F,QAAQ,EACR,KAAK,GAAG,EAAE,CACV,CAAC;QACH,CAAC;QACD,GAAG,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,IAAI,CAAC,KAAiB,EAAE,MAAc;IAC9C,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,cAAc;IACtB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC;IACpE,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -3,6 +3,7 @@ import type { Scene2D } from './Scene2D.ts';
3
3
  import type { SceneClass } from '../core/Scene.ts';
4
4
  import { Signal } from '../core/Signal.ts';
5
5
  import { type QualityScalerOptions } from './QualityScaler.ts';
6
+ import { type TransitionOptions } from './render/SceneTransition.ts';
6
7
  export interface GameOptions {
7
8
  /** the canvas to draw into; one is created and appended if omitted */
8
9
  canvas?: HTMLCanvasElement;
@@ -97,6 +98,7 @@ export declare class Game {
97
98
  private hitStopScale;
98
99
  private stack;
99
100
  private pending;
101
+ private running;
100
102
  private options;
101
103
  private started;
102
104
  private stopWatchingDpr;
@@ -108,6 +110,8 @@ export declare class Game {
108
110
  /** the viewport width in css pixels, which is what scenes lay out against */
109
111
  get width(): number;
110
112
  get height(): number;
113
+ /** the running game, or null before one exists, for code that works with or without one */
114
+ static get active(): Game | null;
111
115
  /** the running game, for the few places that genuinely need a global */
112
116
  static get current(): Game;
113
117
  start(first: SceneClass<Scene2D>): Promise<void>;
@@ -117,7 +121,16 @@ export declare class Game {
117
121
  * The whole stack goes: every scene is destroyed, suspended or not, and the
118
122
  * new one starts alone. For a scene that returns, push it instead.
119
123
  */
120
- switchScene(next: SceneClass<Scene2D>): void;
124
+ switchScene(next: SceneClass<Scene2D>, options?: TransitionOptions): void;
125
+ /**
126
+ * Changes what the current scene shows under a transition: `swap` runs at the start of the next
127
+ * frame, once the outgoing picture has been photographed, and the transition then plays over the
128
+ * result. For a scene that replaces its decor, level or layout in place rather than switching scenes;
129
+ * `Scene2D.transitionTo` is the same call from inside the scene.
130
+ */
131
+ transition(swap: () => void, options: TransitionOptions): void;
132
+ /** true while a transition is playing, for a scene that should ignore input until it ends */
133
+ get transitioning(): boolean;
121
134
  /**
122
135
  * Queues a scene on top of the current one; it starts at the next frame.
123
136
  *
@@ -198,6 +211,13 @@ export declare class Game {
198
211
  private fitResolutionToDevice;
199
212
  private frame;
200
213
  private switchNow;
214
+ /** a picture of everything on screen now, or null when there is nothing to show or motion is reduced */
215
+ private snapshot;
216
+ /** puts what is on the stage into a container the transition may move, between its two layers */
217
+ private beginTransition;
218
+ /** finishes a transition that is still playing and puts the scenes back on the stage */
219
+ private endTransition;
220
+ private applySwap;
201
221
  /** a new scene alone: everything else is destroyed, the clocks restart */
202
222
  private applySwitch;
203
223
  /** a new scene over the current one, which suspends but survives underneath */
@@ -1 +1 @@
1
- {"version":3,"file":"Game.d.ts","sourceRoot":"","sources":["../../src/two-d/Game.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Game.d.ts","sourceRoot":"","sources":["../../src/two-d/Game.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
- import { Application, TextureSource } from 'pixi.js';
1
+ import { Application, Container, TextureSource } from 'pixi.js';
2
2
  import { SceneStack } from '../core/SceneStack.js';
3
3
  import { Signal } from '../core/Signal.js';
4
4
  import { Logger } from '../core/Log.js';
5
5
  import { fitResolution } from './ResolutionFit.js';
6
6
  import { QualityScaler } from './QualityScaler.js';
7
7
  import * as Input from '../core/Input.js';
8
+ import { reducedMotion } from '../core/Motion.js';
9
+ import { TransitionRunner } from './render/SceneTransition.js';
8
10
  const PIXEL_ART_CLASS = 'mwg-pixel-art';
9
11
  const log = new Logger('renderer');
10
12
  /**
@@ -70,6 +72,7 @@ export class Game {
70
72
  this.hitStopScale = 0;
71
73
  this.stack = new SceneStack();
72
74
  this.pending = [];
75
+ this.running = null;
73
76
  this.started = false;
74
77
  this.stopWatchingDpr = null;
75
78
  this.stopWatchingVisibility = null;
@@ -108,6 +111,10 @@ export class Game {
108
111
  get height() {
109
112
  return this.app.renderer.screen.height;
110
113
  }
114
+ /** the running game, or null before one exists, for code that works with or without one */
115
+ static get active() {
116
+ return Game.instance;
117
+ }
111
118
  /** the running game, for the few places that genuinely need a global */
112
119
  static get current() {
113
120
  if (!Game.instance)
@@ -188,8 +195,21 @@ export class Game {
188
195
  * The whole stack goes: every scene is destroyed, suspended or not, and the
189
196
  * new one starts alone. For a scene that returns, push it instead.
190
197
  */
191
- switchScene(next) {
192
- this.pending.push({ kind: 'switch', next });
198
+ switchScene(next, options) {
199
+ this.pending.push({ kind: 'switch', next, transition: options });
200
+ }
201
+ /**
202
+ * Changes what the current scene shows under a transition: `swap` runs at the start of the next
203
+ * frame, once the outgoing picture has been photographed, and the transition then plays over the
204
+ * result. For a scene that replaces its decor, level or layout in place rather than switching scenes;
205
+ * `Scene2D.transitionTo` is the same call from inside the scene.
206
+ */
207
+ transition(swap, options) {
208
+ this.pending.push({ kind: 'swap', swap, transition: options });
209
+ }
210
+ /** true while a transition is playing, for a scene that should ignore input until it ends */
211
+ get transitioning() {
212
+ return this.running !== null;
193
213
  }
194
214
  /**
195
215
  * Queues a scene on top of the current one; it starts at the next frame.
@@ -319,9 +339,13 @@ export class Game {
319
339
  frame(deltaSeconds) {
320
340
  //queued scene changes run first, in order, so a frame never updates a
321
341
  //scene that was already asked to leave
342
+ if (this.pending.length > 0)
343
+ this.endTransition();
322
344
  for (const request of this.pending) {
323
345
  if (request.kind === 'switch')
324
- this.applySwitch(request.next);
346
+ this.applySwitch(request.next, request.transition);
347
+ else if (request.kind === 'swap')
348
+ this.applySwap(request.swap, request.transition);
325
349
  else if (request.kind === 'push')
326
350
  this.applyPush(request.next);
327
351
  else
@@ -333,7 +357,11 @@ export class Game {
333
357
  this.hitStopRemaining -= deltaSeconds;
334
358
  this.timeScale = this.hitStopRemaining > 0 ? this.hitStopScale : 1;
335
359
  }
336
- this.elapsed = Math.min(deltaSeconds, this.options.maxDelta) * this.timeScale;
360
+ //a transition counts real time, and may hold the scene still while it plays
361
+ if (this.running && this.running.runner.update(deltaSeconds))
362
+ this.endTransition();
363
+ const frozen = this.running?.runner.pause === true;
364
+ this.elapsed = frozen ? 0 : Math.min(deltaSeconds, this.options.maxDelta) * this.timeScale;
337
365
  //a parked clock reads 0, which is always inside budget - observing it would ratchet
338
366
  //the ratio back up while hidden or hit-stopped, so only real frames count
339
367
  const scaler = this.suspended_ || this.elapsed <= 0 ? null : this.scaler;
@@ -354,8 +382,43 @@ export class Game {
354
382
  switchNow(next) {
355
383
  this.applySwitch(next);
356
384
  }
385
+ /** a picture of everything on screen now, or null when there is nothing to show or motion is reduced */
386
+ snapshot(options) {
387
+ if (!options || reducedMotion())
388
+ return null;
389
+ return this.app.renderer.generateTexture(this.app.stage);
390
+ }
391
+ /** puts what is on the stage into a container the transition may move, between its two layers */
392
+ beginTransition(options, snapshot) {
393
+ const wrapper = new Container();
394
+ wrapper.addChild(...this.app.stage.removeChildren());
395
+ const runner = new TransitionRunner(options, { width: this.width, height: this.height }, snapshot, wrapper);
396
+ this.app.stage.addChild(runner.under, wrapper, runner.over);
397
+ this.running = { runner, wrapper };
398
+ }
399
+ /** finishes a transition that is still playing and puts the scenes back on the stage */
400
+ endTransition() {
401
+ const running = this.running;
402
+ if (!running)
403
+ return;
404
+ this.running = null;
405
+ running.runner.finish();
406
+ const scenes = running.wrapper.removeChildren();
407
+ this.app.stage.removeChildren();
408
+ this.app.stage.addChild(...scenes);
409
+ running.wrapper.destroy();
410
+ }
411
+ applySwap(swap, options) {
412
+ const snapshot = this.snapshot(options);
413
+ swap();
414
+ if (snapshot)
415
+ this.beginTransition(options, snapshot);
416
+ else
417
+ options.onDone?.();
418
+ }
357
419
  /** a new scene alone: everything else is destroyed, the clocks restart */
358
- applySwitch(next) {
420
+ applySwitch(next, transition) {
421
+ const snapshot = this.snapshot(transition);
359
422
  const scene = new next();
360
423
  this.stack.replace(scene);
361
424
  this.app.stage.removeChildren();
@@ -364,6 +427,10 @@ export class Game {
364
427
  this.timeTotal = 0;
365
428
  this.timeScale = 1;
366
429
  scene.resize(this.width, this.height);
430
+ if (snapshot && transition)
431
+ this.beginTransition(transition, snapshot);
432
+ else
433
+ transition?.onDone?.();
367
434
  }
368
435
  /** a new scene over the current one, which suspends but survives underneath */
369
436
  applyPush(next) {
@@ -1 +1 @@
1
- {"version":3,"file":"Game.js","sourceRoot":"","sources":["../../src/two-d/Game.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Game.js","sourceRoot":"","sources":["../../src/two-d/Game.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Scene } from '../core/Scene.ts';
2
2
  import type { Container2D } from './render/Types2D.ts';
3
+ import type { TransitionOptions } from './render/SceneTransition.ts';
3
4
  /**
4
5
  * A scene that draws through Pixi: `core.Scene`'s lifecycle plus the container everything
5
6
  * this screen shows hangs off.
@@ -13,6 +14,29 @@ import type { Container2D } from './render/Types2D.ts';
13
14
  export declare abstract class Scene2D extends Scene {
14
15
  /** everything this scene draws hangs off here */
15
16
  readonly stage: Container2D;
17
+ /**
18
+ * Replaces what this scene shows under a transition: the current picture is photographed, `swap`
19
+ * changes the content (a new level, decor, layout), and the transition plays over the result.
20
+ * Without a running `Game` (a test) `swap` just runs.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { Scene2D } from '@datamoc/mw_games/two-d';
25
+ * import { tileShrink } from '@datamoc/mw_games/two-d/render';
26
+ *
27
+ * class Levels extends Scene2D {
28
+ * override create(): void {}
29
+ * private level = 1;
30
+ * next(): void {
31
+ * this.transitionTo(() => this.load(++this.level), { transition: tileShrink({ columns: 8, rows: 5 }), duration: 0.6 });
32
+ * }
33
+ * private load(level: number): void {
34
+ * console.log('loading level', level);
35
+ * }
36
+ * }
37
+ * ```
38
+ */
39
+ transitionTo(swap: () => void, options: TransitionOptions): void;
16
40
  protected teardown(): void;
17
41
  }
18
42
  export type Scene2DClass = new () => Scene2D;
@@ -1 +1 @@
1
- {"version":3,"file":"Scene2D.d.ts","sourceRoot":"","sources":["../../src/two-d/Scene2D.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;GASG;AACH,8BAAsB,OAAQ,SAAQ,KAAK;IAC1C,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAmB;IAE9C,UAAmB,QAAQ,IAAI,IAAI,CAElC;CACD;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,OAAO,CAAC"}
1
+ {"version":3,"file":"Scene2D.d.ts","sourceRoot":"","sources":["../../src/two-d/Scene2D.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;GASG;AACH,8BAAsB,OAAQ,SAAQ,KAAK;IAC1C,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAmB;IAE9C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAI/D;IAED,UAAmB,QAAQ,IAAI,IAAI,CAElC;CACD;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,OAAO,CAAC"}