melonjs 19.6.0 → 19.7.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 (114) hide show
  1. package/README.md +5 -4
  2. package/build/application/application.d.ts +34 -2
  3. package/build/application/application.d.ts.map +1 -1
  4. package/build/application/settings.d.ts +37 -1
  5. package/build/application/settings.d.ts.map +1 -1
  6. package/build/camera/camera2d.d.ts +59 -7
  7. package/build/camera/camera2d.d.ts.map +1 -1
  8. package/build/camera/camera3d.d.ts +335 -0
  9. package/build/camera/camera3d.d.ts.map +1 -0
  10. package/build/camera/frustum.d.ts +162 -0
  11. package/build/camera/frustum.d.ts.map +1 -0
  12. package/build/const.d.ts +30 -3
  13. package/build/const.d.ts.map +1 -1
  14. package/build/geometries/sphere.d.ts +105 -0
  15. package/build/geometries/sphere.d.ts.map +1 -0
  16. package/build/index.d.ts +6 -4
  17. package/build/index.d.ts.map +1 -1
  18. package/build/index.js +27489 -24693
  19. package/build/index.js.map +4 -4
  20. package/build/input/keyboard.d.ts.map +1 -1
  21. package/build/input/pointerevent.d.ts.map +1 -1
  22. package/build/lang/deprecated.d.ts +18 -0
  23. package/build/lang/deprecated.d.ts.map +1 -1
  24. package/build/loader/loadingscreen.d.ts +8 -0
  25. package/build/loader/loadingscreen.d.ts.map +1 -1
  26. package/build/loader/parsers/mtl.d.ts.map +1 -1
  27. package/build/loader/parsers/obj.d.ts.map +1 -1
  28. package/build/math/color.d.ts +43 -5
  29. package/build/math/color.d.ts.map +1 -1
  30. package/build/math/math.d.ts +44 -0
  31. package/build/math/math.d.ts.map +1 -1
  32. package/build/math/observableVector2d.d.ts +14 -2
  33. package/build/math/observableVector2d.d.ts.map +1 -1
  34. package/build/math/observableVector3d.d.ts +14 -2
  35. package/build/math/observableVector3d.d.ts.map +1 -1
  36. package/build/math/vector2d.d.ts +16 -2
  37. package/build/math/vector2d.d.ts.map +1 -1
  38. package/build/math/vector3d.d.ts +16 -2
  39. package/build/math/vector3d.d.ts.map +1 -1
  40. package/build/particles/emitter.d.ts.map +1 -1
  41. package/build/physics/adapter.d.ts +77 -0
  42. package/build/physics/adapter.d.ts.map +1 -1
  43. package/build/physics/broadphase/aabb3d.d.ts +115 -0
  44. package/build/physics/broadphase/aabb3d.d.ts.map +1 -0
  45. package/build/physics/broadphase/broadphase.d.ts +74 -0
  46. package/build/physics/broadphase/broadphase.d.ts.map +1 -0
  47. package/build/physics/broadphase/factory.d.ts +30 -0
  48. package/build/physics/broadphase/factory.d.ts.map +1 -0
  49. package/build/physics/broadphase/octree.d.ts +325 -0
  50. package/build/physics/broadphase/octree.d.ts.map +1 -0
  51. package/build/physics/broadphase/quadtree.d.ts +184 -0
  52. package/build/physics/broadphase/quadtree.d.ts.map +1 -0
  53. package/build/physics/builtin/body.d.ts +7 -3
  54. package/build/physics/builtin/body.d.ts.map +1 -1
  55. package/build/physics/builtin/builtin-adapter.d.ts +6 -1
  56. package/build/physics/builtin/builtin-adapter.d.ts.map +1 -1
  57. package/build/physics/builtin/raycast.d.ts.map +1 -1
  58. package/build/physics/world.d.ts +15 -4
  59. package/build/physics/world.d.ts.map +1 -1
  60. package/build/renderable/container.d.ts +51 -5
  61. package/build/renderable/container.d.ts.map +1 -1
  62. package/build/renderable/mesh.d.ts +85 -10
  63. package/build/renderable/mesh.d.ts.map +1 -1
  64. package/build/renderable/renderable.d.ts +9 -4
  65. package/build/renderable/renderable.d.ts.map +1 -1
  66. package/build/state/stage.d.ts +8 -0
  67. package/build/state/stage.d.ts.map +1 -1
  68. package/build/state/state.d.ts.map +1 -1
  69. package/build/system/device.d.ts +196 -310
  70. package/build/system/device.d.ts.map +1 -1
  71. package/build/system/event.d.ts +49 -0
  72. package/build/system/event.d.ts.map +1 -1
  73. package/build/system/fullscreen.d.ts +16 -0
  74. package/build/system/fullscreen.d.ts.map +1 -0
  75. package/build/system/platform.d.ts +32 -4
  76. package/build/system/platform.d.ts.map +1 -1
  77. package/build/system/timer.d.ts.map +1 -1
  78. package/build/utils/function.d.ts +7 -1
  79. package/build/utils/function.d.ts.map +1 -1
  80. package/build/utils/types.d.ts +5 -0
  81. package/build/utils/types.d.ts.map +1 -1
  82. package/build/video/buffer/vertex.d.ts +19 -4
  83. package/build/video/buffer/vertex.d.ts.map +1 -1
  84. package/build/video/canvas/canvas_renderer.d.ts +4 -4
  85. package/build/video/canvas/canvas_renderer.d.ts.map +1 -1
  86. package/build/video/canvas_factory.d.ts +25 -0
  87. package/build/video/canvas_factory.d.ts.map +1 -0
  88. package/build/video/renderer.d.ts +89 -15
  89. package/build/video/renderer.d.ts.map +1 -1
  90. package/build/video/renderstate.d.ts +12 -0
  91. package/build/video/renderstate.d.ts.map +1 -1
  92. package/build/video/rendertarget/rendertarget.d.ts +3 -1
  93. package/build/video/rendertarget/rendertarget.d.ts.map +1 -1
  94. package/build/video/texture/cache.d.ts +5 -0
  95. package/build/video/texture/cache.d.ts.map +1 -1
  96. package/build/video/texture/resource.d.ts +22 -14
  97. package/build/video/texture/resource.d.ts.map +1 -1
  98. package/build/video/video.d.ts +3 -1
  99. package/build/video/video.d.ts.map +1 -1
  100. package/build/video/webgl/batchers/batcher.d.ts.map +1 -1
  101. package/build/video/webgl/batchers/lit_quad_batcher.d.ts.map +1 -1
  102. package/build/video/webgl/batchers/material_batcher.d.ts +9 -0
  103. package/build/video/webgl/batchers/material_batcher.d.ts.map +1 -1
  104. package/build/video/webgl/batchers/mesh_batcher.d.ts +45 -1
  105. package/build/video/webgl/batchers/mesh_batcher.d.ts.map +1 -1
  106. package/build/video/webgl/batchers/primitive_batcher.d.ts.map +1 -1
  107. package/build/video/webgl/batchers/quad_batcher.d.ts +2 -2
  108. package/build/video/webgl/batchers/quad_batcher.d.ts.map +1 -1
  109. package/build/video/webgl/renderers/tmxlayer/orthogonal.d.ts.map +1 -1
  110. package/build/video/webgl/webgl_renderer.d.ts +2 -2
  111. package/build/video/webgl/webgl_renderer.d.ts.map +1 -1
  112. package/package.json +3 -2
  113. package/build/physics/builtin/quadtree.d.ts +0 -112
  114. package/build/physics/builtin/quadtree.d.ts.map +0 -1
@@ -0,0 +1,184 @@
1
+ import type { Bounds } from "../bounds.ts";
2
+ import type World from "../world.js";
3
+ import type { Broadphase } from "./broadphase.ts";
4
+ /**
5
+ * Minimal axis-aligned rectangle shape consumed by `QuadTree` — the
6
+ * full {@link Bounds} class satisfies it structurally, so do the
7
+ * `{ left, top, width, height }` POJOs `split` allocates for
8
+ * subnodes. Kept as an exported interface so any subclass / adapter
9
+ * that constructs its own root bounds doesn't have to import
10
+ * `Bounds`.
11
+ */
12
+ export interface QuadRect {
13
+ left: number;
14
+ top: number;
15
+ width: number;
16
+ height: number;
17
+ }
18
+ /**
19
+ * Structural shape for an item inserted into the `QuadTree`. Every
20
+ * Renderable satisfies it; `getBounds()` is the only required
21
+ * member. `isFloating` triggers the viewport-localToWorld coord
22
+ * remap; `isKinematic` / `name` / `addChild` are consulted only by
23
+ * `insertContainer` / `removeContainer` when walking a subtree.
24
+ */
25
+ export interface QuadTreeItem {
26
+ getBounds(): QuadRect;
27
+ isFloating?: boolean;
28
+ isKinematic?: boolean;
29
+ name?: string;
30
+ }
31
+ /**
32
+ * Optional comparator passed to {@link QuadTree.retrieve} — invoked
33
+ * once on the assembled candidate array, only when `retrieve` was
34
+ * called in root mode (no caller-supplied `result`).
35
+ */
36
+ export type QuadTreeSortFn = (a: QuadTreeItem, b: QuadTreeItem) => number;
37
+ /**
38
+ * a QuadTree implementation in JavaScript, a 2d spatial subdivision algorithm.
39
+ * @category Physics
40
+ * @see World.broadphase
41
+ */
42
+ export default class QuadTree implements Broadphase<QuadTreeItem> {
43
+ world: World;
44
+ bounds: QuadRect | Bounds;
45
+ max_objects: number;
46
+ max_levels: number;
47
+ level: number;
48
+ objects: QuadTreeItem[];
49
+ nodes: QuadTree[];
50
+ /**
51
+ * Total number of objects in this subtree (this node's own
52
+ * `objects` plus every descendant's). Maintained by `insert`
53
+ * and `remove` so `isPrunable` / `hasChildren` are O(1) reads
54
+ * instead of O(tree-size) walks. Reset to 0 in `clear`.
55
+ * @ignore
56
+ */
57
+ _subtreeCount: number;
58
+ /**
59
+ * Root-only scratch array reused across `retrieve` calls to
60
+ * avoid allocating a fresh array per pointer event / per
61
+ * narrow-phase query. Only the root allocates one; recursive
62
+ * subnode calls receive the array via the `result` arg.
63
+ * @ignore
64
+ */
65
+ _retrieveScratch: QuadTreeItem[] | null;
66
+ /**
67
+ * @param world - the physic world this QuadTree belongs to
68
+ * @param bounds - bounds of the node
69
+ * @param [max_objects=4] - max objects a node can hold before splitting into 4 subnodes
70
+ * @param [max_levels=4] - total max levels inside root QuadTree
71
+ * @param [level] - depth level, required for subnodes
72
+ */
73
+ constructor(world: World, bounds: QuadRect | Bounds, max_objects?: number, max_levels?: number, level?: number);
74
+ split(): void;
75
+ getIndex(item: QuadTreeItem): number;
76
+ /**
77
+ * Insert the given object container into the node.
78
+ *
79
+ * Typed against the structural duck shape (`getChildren() →
80
+ * ContainerOrChild[]`) rather than the concrete `Container` class
81
+ * so the recursive call below — where `child` is the structural
82
+ * `ContainerOrChild` shape from `getChildren()`, not a `Container`
83
+ * instance — type-checks without an `as unknown as Container` cast.
84
+ * `Container` itself satisfies the shape (its `getChildren()`
85
+ * returns `Renderable[]`, which matches the looser structural
86
+ * `ContainerOrChild[]`).
87
+ * @param container - group of objects to be added
88
+ */
89
+ insertContainer(container: ContainerLike): void;
90
+ /**
91
+ * Insert the given object into the node. If the node
92
+ * exceeds the capacity, it will split and add all
93
+ * objects to their corresponding subnodes.
94
+ * @param item - object to be added
95
+ */
96
+ insert(item: QuadTreeItem): void;
97
+ /**
98
+ * Recursively remove the given container and its descendants from
99
+ * the quadtree. Mirrors `insertContainer` so the broadphase can be
100
+ * kept in sync when a subtree is detached via
101
+ * `Container.removeChildNow` between two `world.update()` rebuilds
102
+ * (pointer events fire async in that window and would otherwise
103
+ * hit destroyed renderables).
104
+ * @param container - group of objects to be removed
105
+ */
106
+ removeContainer(container: ContainerLikeOptional): void;
107
+ /**
108
+ * Return all objects that could collide with the given object.
109
+ *
110
+ * **Re-entrancy contract:** when called with no explicit `result`
111
+ * argument, this method reuses a single root-level scratch array to
112
+ * avoid per-frame allocations. The returned reference is therefore
113
+ * **not safe to retain** past the next `retrieve()` call, AND it is
114
+ * **not safe to issue another scratch-mode `retrieve()` while iterating
115
+ * the previous result** — the second call clears the scratch and
116
+ * refills it, corrupting the outer iteration. In-engine callers
117
+ * (`pointerevent.ts`, `detector.js`) iterate synchronously and never
118
+ * recurse into `retrieve()`, so they're fine. User-facing portable
119
+ * APIs (`adapter.queryAABB`, `adapter.raycast`) pass their own array
120
+ * via the `result` parameter, which bypasses the scratch entirely
121
+ * and is safe to call from inside collision handlers.
122
+ * @param item - object to be checked against
123
+ * @param [fn] - a sorting function for the returned array
124
+ * @param [result] - optional caller-supplied result array. Pass an
125
+ * explicit (typically empty) array to sidestep the shared scratch —
126
+ * required for re-entrancy safety.
127
+ * @returns array with all detected objects
128
+ */
129
+ retrieve(item: QuadTreeItem, fn?: QuadTreeSortFn, result?: QuadTreeItem[]): QuadTreeItem[];
130
+ /**
131
+ * Remove the given item from the quadtree.
132
+ * (this function won't recalculate the impacted node)
133
+ * @param item - object to be removed
134
+ * @returns true if the item was found and removed.
135
+ */
136
+ remove(item: QuadTreeItem): boolean;
137
+ /**
138
+ * return true if the node is prunable
139
+ * @returns true if the node is prunable
140
+ */
141
+ isPrunable(): boolean;
142
+ /**
143
+ * return true if the node has any children
144
+ * @returns true if the node has any children
145
+ */
146
+ hasChildren(): boolean;
147
+ /**
148
+ * clear the quadtree
149
+ * @param [bounds] - the bounds to be cleared
150
+ */
151
+ clear(bounds?: Bounds): void;
152
+ }
153
+ /**
154
+ * Structural shape consumed by `insertContainer` / `removeContainer`
155
+ * when walking a Container's `getChildren()`. Captures only the
156
+ * fields the walk inspects — keeps the conversion strict-mode clean
157
+ * without leaking `any`.
158
+ *
159
+ * `getChildren` is optional because leaf renderables don't have it;
160
+ * the recursive `insertContainer` narrows via {@link hasGetChildren}.
161
+ * @ignore
162
+ */
163
+ interface ContainerOrChild extends QuadTreeItem {
164
+ addChild?: (...args: unknown[]) => unknown;
165
+ getChildren?: () => ContainerOrChild[];
166
+ }
167
+ /**
168
+ * Structural shape used as the `insertContainer` /
169
+ * `removeContainer` parameter type. Named (rather than inline) so the
170
+ * JSDoc-aware lint doesn't require nested `@param container.getChildren`
171
+ * documentation at every call site. `Container` itself satisfies this
172
+ * shape; the optional variant covers the case where the World's lazy
173
+ * `children` accessor returns `undefined`.
174
+ * @ignore
175
+ */
176
+ type ContainerLike = {
177
+ getChildren(): ContainerOrChild[];
178
+ };
179
+ /** @ignore */
180
+ type ContainerLikeOptional = {
181
+ getChildren?(): ContainerOrChild[];
182
+ };
183
+ export {};
184
+ //# sourceMappingURL=quadtree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quadtree.d.ts","sourceRoot":"","sources":["../../../src/physics/broadphase/quadtree.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAclD;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC5B,SAAS,IAAI,QAAQ,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,KAAK,MAAM,CAAC;AA+C1E;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,UAAU,CAAC,YAAY,CAAC;IAChE,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,gBAAgB,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAExC;;;;;;OAMG;gBAEF,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,QAAQ,GAAG,MAAM,EACzB,WAAW,SAAI,EACf,UAAU,SAAI,EACd,KAAK,SAAI;IAoBV,KAAK;IAuEL,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAiDpC;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,SAAS,EAAE,aAAa;IA8BxC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,YAAY;IA+CzB;;;;;;;;OAQG;IACH,eAAe,CAAC,SAAS,EAAE,qBAAqB;IA0BhD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,CACP,IAAI,EAAE,YAAY,EAClB,EAAE,CAAC,EAAE,cAAc,EACnB,MAAM,CAAC,EAAE,YAAY,EAAE,GACrB,YAAY,EAAE;IA2CjB;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAsEnC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAMrB;;;OAGG;IACH,WAAW,IAAI,OAAO;IAOtB;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM;CAuBrB;AAED;;;;;;;;;GASG;AACH,UAAU,gBAAiB,SAAQ,YAAY;IAC9C,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,gBAAgB,EAAE,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,KAAK,aAAa,GAAG;IAAE,WAAW,IAAI,gBAAgB,EAAE,CAAA;CAAE,CAAC;AAC3D,cAAc;AACd,KAAK,qBAAqB,GAAG;IAAE,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAA;CAAE,CAAC"}
@@ -34,11 +34,15 @@ export default class Body {
34
34
  */
35
35
  public bounds: Bounds;
36
36
  /**
37
- * The collision shapes of the body
37
+ * The collision shapes of the body. Always an array — every
38
+ * mutation path goes through `push` / `includes`. The
39
+ * non-array `Point` that used to be in this union was a
40
+ * mis-doc and broke downstream `shapes.length` reads in
41
+ * TypeScript.
38
42
  * @ignore
39
- * @type {Polygon[]|Line[]|Ellipse[]|Point|Point[]}
43
+ * @type {(Polygon|Line|Ellipse|Point)[]}
40
44
  */
41
- shapes: Polygon[] | Line[] | Ellipse[] | Point | Point[];
45
+ shapes: (Polygon | Line | Ellipse | Point)[];
42
46
  /**
43
47
  * The body collision mask, that defines what should collide with what.<br>
44
48
  * (by default will collide with all entities)
@@ -1 +1 @@
1
- {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../src/physics/builtin/body.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../src/physics/builtin/body.js"],"names":[],"mappings":"AAaA;;;;;;;;IAQI;AAEJ;;;;GAIG;AACH;IACC;;;;OAIG;IACH,sBAJW,UAAU,GAAC,SAAS,GAAC,MAAM,GAAC,MAAM,GAAC,eAAe,WAClD,IAAI,GAAC,IAAI,EAAE,GAAC,OAAO,GAAC,OAAO,EAAE,GAAC,IAAI,GAAC,IAAI,EAAE,GAAC,OAAO,GAAC,OAAO,EAAE,GAAC,KAAK,GAAC,KAAK,EAAE,GAAC,MAAM,GAAC,MAAM,EAAE,GAAC,MAAM,2BAkS1G;IA9RA;;;;;;OAMG;IACH,iBAHU,UAAU,GAAC,SAAS,GAAC,MAAM,GAAC,MAAM,GAAC,eAAe,CAGpC;IAGvB;;;;OAIG;IACH,eAFU,MAAM,CAEc;IAI9B;;;;;;;;OAQG;IACH,QAFU,CAAC,OAAO,GAAC,IAAI,GAAC,OAAO,GAAC,KAAK,CAAC,EAAE,CAExB;IAGjB;;;;;;;OAOG;IACH,eAJU,MAAM,CAI+B;IAE/C;;;;;;;;;OASG;IACH,sBAPU,MAAM,CAOiC;IAGhD;;;;;;;OAOG;IACH,YAHU,QAAQ,CAGW;IAK7B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,cAlBU,QAAQ,CAkBa;IAK/B;;;;;OAKG;IACH,iBAHU,QAAQ,CAGgB;IAInC;;;;;;OAMG;IACH,eAHU,MAAM,CAGD;IAEf;;;;;OAKG;IACH,aAHU,MAAM,CAGH;IAEb;;;;;;;;;;;;;OAaG;IACH,cANU,MAAM,CAMF;IAEd;;;;;;;;;;OAUG;IACH,wBANU,MAAM,CAMQ;IAExB;;;;;;;;;;;;;;;OAeG;IACH,oBAPU,MAAM,CAOI;IAEpB;;;;;;;;;;;;;;;OAeG;IACH,sBAPU,MAAM,CAOM;IAGrB;;;;;OAKG;IACH,eAHU,QAAQ,CAGc;IAKjC;;;;;;;OAOG;IACH,0BAHU,OAAO,CAGI;IAErB;;;;;;;;;OASG;IACH,iBAHU,OAAO,CAGI;IAErB;;;;;;OAMG;IACH,qBAHU,MAAM,CAGO;IAEvB;;;;;;;;;;;;;;OAcG;IACH,sBAXU,OAAO,CAWS;IAE1B;;;;;;;;OAQG;IACH,yBAHU,OAAO,CAGG;IAEpB;;;;;;;OAOG;IACH,yBAHU,OAAO,CAGG;IAGnB,mCAAgC;IAoBlC;;;;OAIG;IACH,qBAFW,OAAO,QAIjB;IAED;;;;;;OAMG;IACH,eAHW,MAAM,KACN,MAAM,QAIhB;IAED;;;;;OAKG;IACH,kBAJW,QAAQ,GAEN,QAAQ,CAIpB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,cAzBW,MAAM,KACN,MAAM,WACN,MAAM,WAON,MAAM,QAkChB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,oBAXW,MAAM,QAehB;IAED;;;;;;;;;OASG;IACH,0BALW,MAAM,QAOhB;IAED;;;;;;;;OAQG;IACH,sBAPa,MAAM,CASlB;IAED;;;;;;;;;;;OAWG;IACH,cAPW,MAAM,QAgBhB;IAED;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,4BAoBC;IAED;;;;;;;;;;;OAWG;IACH,gBAHW,MAAM,KACN,MAAM,QAMhB;IAED;;;;;;;OAOG;IACH,WAFW,MAAM,QAIhB;IAED;;;;;;;;;;OAUG;IACH,aAFW,MAAM,QAIhB;IAED;;;;;;OAMG;IACH,uBAFW,MAAM,QAIhB;IAED;;;;;;;OAOG;IACH,qBAFW,OAAO,QAIjB;IAED;;;;;;;;;;OAUG;IACH,gBARW,IAAI,GAAC,OAAO,GAAC,IAAI,GAAC,OAAO,GAAC,KAAK,GAAC,KAAK,EAAE,GAAC,MAAM,GAAC,MAAM,GACnD,MAAM,CAoElB;IAED;;;;;;;;OAQG;IACH,gCAIC;IAED;;;;;OAKG;IACH,sBAJW,QAAQ,EAAE,UACV,MAAM,UACN,OAAO,QAiBjB;IAED;;;;OAIG;IACH,sBAHW,QAAQ,EAAE,UACV,MAAM,QAIhB;IAED;;;;;;;;;;;;OAYG;IACH,eAVW,MAAM,OACN,MAAM,GAEJ,MAAM,CAmClB;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,OAAO,GAAC,IAAI,GAAC,OAAO,CAIhC;IAED;;;OAGG;IACH,aAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,mBAHW,OAAO,GAAC,IAAI,GAAC,OAAO,GAClB,MAAM,CAalB;IAED;;;;OAIG;IACH,qBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;;;;;;;OAYG;IACH,2BARW,MAAM,QAUhB;IAED;;;;;;;OAOG;IACH,uBALW,MAAM,QAmBhB;IAED;;;;OAIG;IACH,6BAHW,cAAc,QAiDxB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,sCAVW,MAAM,QAwBhB;IAED;;;;;;;;;;;;;OAaG;IACH,0BAVa,OAAO,CA+BnB;IAED;;;;;;OAMG;IACH,cAJW,MAAM,MACN,QAAQ,GACN,IAAI,CAsBhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,KACN,MAAM,QAKhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,MACN,MAAM,QAKhB;IAED;;;;;;;;;;;;OAYG;IACH,oBAFa,OAAO,CAoEnB;IAED;;;OAGG;IACH,gBA+BC;CACD;4BAjlC0B,gCAAgC;2BADjC,+BAA+B;wBADlC,mCAAmC;wBAGnC,4BAA4B;iCACnB,qCAAqC;uBARlC,cAAc;wBAPZ,6BAA6B;qBAFnC,0BAA0B;wBADjC,6BAA6B;sBAEpB,2BAA2B;yBAIrB,wBAAwB;qBAF1C,+BAA+B;gCAgBrB,gBAAgB"}
@@ -1,7 +1,9 @@
1
1
  import type { Rect } from "../../geometries/rectangle.ts";
2
+ import { Sphere } from "../../geometries/sphere.ts";
2
3
  import { Vector2d } from "../../math/vector2d.ts";
4
+ import { Vector3d } from "../../math/vector3d.ts";
3
5
  import type Renderable from "../../renderable/renderable.js";
4
- import type { AdapterCapabilities, AdapterOptions, BodyDefinition, BodyShape, PhysicsAdapter, RaycastHit } from "../adapter.ts";
6
+ import type { AdapterCapabilities, AdapterOptions, BodyDefinition, BodyShape, PhysicsAdapter, RaycastHit, RaycastHit3d } from "../adapter.ts";
5
7
  import type { Bounds } from "../bounds.ts";
6
8
  import type World from "../world.js";
7
9
  import Body from "./body.js";
@@ -85,6 +87,9 @@ export default class BuiltinAdapter implements PhysicsAdapter {
85
87
  getBodyShapes(renderable: Renderable): readonly BodyShape[];
86
88
  isGrounded(renderable: Renderable): boolean;
87
89
  raycast(from: Vector2d, to: Vector2d): RaycastHit | null;
90
+ raycast3d(from: Vector3d, to: Vector3d): RaycastHit3d | null;
91
+ querySphere(center: Vector3d, radius: number): Renderable[];
92
+ querySphere(sphere: Sphere): Renderable[];
88
93
  queryAABB(rect: Rect): Renderable[];
89
94
  applyGravity(body: Body): void;
90
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-adapter.d.ts","sourceRoot":"","sources":["../../../src/physics/builtin/builtin-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtin-adapter.d.ts","sourceRoot":"","sources":["../../../src/physics/builtin/builtin-adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"raycast.d.ts","sourceRoot":"","sources":["../../../src/physics/builtin/raycast.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AA8KrC,wBAAgB,YAAY,CAC3B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACT,UAAU,EAAE,CA4Gd"}
1
+ {"version":3,"file":"raycast.d.ts","sourceRoot":"","sources":["../../../src/physics/builtin/raycast.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AA+KrC,wBAAgB,YAAY,CAC3B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACT,UAAU,EAAE,CA8Gd"}
@@ -84,10 +84,22 @@ export default class World extends Container {
84
84
  */
85
85
  adapter: PhysicsAdapter;
86
86
  /**
87
- * the instance of the game world quadtree used for broadphase (used by the builtin physic and pointer event implementation)
88
- * @type {QuadTree}
87
+ * Spatial broadphase used by built-in physics and pointer
88
+ * event picking. The concrete class depends on
89
+ * {@link Container#sortOn}: under `"depth"` (the value
90
+ * `Camera3d.defaultSortOn` sets on stage reset) it's an
91
+ * `Octree`; under any 2D sortOn it's a `QuadTree`. The choice
92
+ * is reactive — the `sortOn` setter swaps the broadphase if a
93
+ * 2D↔3D boundary crossing occurs, so stage transitions between
94
+ * Camera2d and Camera3d stages are handled transparently.
95
+ *
96
+ * Implementation detail — game code shouldn't reach in here.
97
+ * Use `world.adapter.queryAABB(rect)` /
98
+ * `world.adapter.querySphere(sphere)` /
99
+ * `world.adapter.raycast(...)` instead.
100
+ * @type {import("./broadphase/broadphase.ts").Broadphase}
89
101
  */
90
- broadphase: QuadTree;
102
+ broadphase: import("./broadphase/broadphase.ts").Broadphase;
91
103
  /**
92
104
  * Active physics bodies in this simulation. Backed by the active
93
105
  * adapter; mutating this set directly is no longer the recommended
@@ -145,7 +157,6 @@ export default class World extends Container {
145
157
  import Container from "../renderable/container.js";
146
158
  import type Application from "./../application/application.ts";
147
159
  import type { PhysicsAdapter } from "./adapter.ts";
148
- import QuadTree from "./builtin/quadtree.js";
149
160
  import type Body from "./builtin/body.js";
150
161
  import type { Vector2d } from "../math/vector2d.ts";
151
162
  import type Detector from "./builtin/detector.js";
@@ -1 +1 @@
1
- {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/physics/world.js"],"names":[],"mappings":"AA8BA;;;GAGG;AACH;IACC;;;;;;OAMG;IACH,gBANW,MAAM,MACN,MAAM,UACN,MAAM,WACN,MAAM,YACN,cAAc,EAoHxB;IAlGA;;;OAGG;IACH,KAFU,WAAW,CAED;IAEpB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QANU,MAAM,CAMO;IAEvB;;;;;OAKG;IACH,YAAa;IAEb;;;;;;;OAOG;IACH,WAHU,OAAO,CAGK;IAEtB;;;;;;;;;;;;;;OAcG;IACH,YAHU,OAAO,CAGK;IAEtB;;;;;;OAMG;IACH,SAFU,cAAc,CAEsB;IAG9C;;;OAGG;IACH,YAFU,QAAQ,CAOjB;IAYF;;;;;;;;;;;OAWG;IACH,cAFa,GAAG,CAAC,IAAI,CAAC,CAOrB;IASD,eALa,QAAQ,EAOpB;IATD;;;OAGG;IACH,eAFa,QAAQ,CAIpB;IAKD;;;;OAIG;IACH,gBAFa,QAAQ,GAAG,SAAS,CAIhC;IAsCD;;;;;;;OAOG;IACH,cAHW,IAAI,GACF,KAAK,CASjB;IAED;;;;;OAKG;IACH,iBAHW,IAAI,GACF,KAAK,CASjB;IAED;;;;;OAKG;IACH,yBAIC;IAuBD;;;OAGG;IACH,SAFW,MAAM,QAWhB;CACD;sBAvTqB,4BAA4B;6BAatB,iCAAiC;oCAI1B,cAAc;qBAR5B,uBAAuB;sBAKvB,mBAAmB;8BAEX,qBAAqB;0BADzB,uBAAuB"}
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../src/physics/world.js"],"names":[],"mappings":"AA6BA;;;GAGG;AACH;IACC;;;;;;OAMG;IACH,gBANW,MAAM,MACN,MAAM,UACN,MAAM,WACN,MAAM,YACN,cAAc,EAkIxB;IAhHA;;;OAGG;IACH,KAFU,WAAW,CAED;IAEpB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QANU,MAAM,CAMO;IAEvB;;;;;OAKG;IACH,YAAa;IAEb;;;;;;;OAOG;IACH,WAHU,OAAO,CAGK;IAEtB;;;;;;;;;;;;;;OAcG;IACH,YAHU,OAAO,CAGK;IAEtB;;;;;;OAMG;IACH,SAFU,cAAc,CAEsB;IAG9C;;;;;;;;;;;;;;;OAeG;IACH,YAFU,OAAO,4BAA4B,EAAE,UAAU,CAEjB;IA2CzC;;;;;;;;;;;OAWG;IACH,cAFa,GAAG,CAAC,IAAI,CAAC,CAOrB;IASD,eALa,QAAQ,EAOpB;IATD;;;OAGG;IACH,eAFa,QAAQ,CAIpB;IAKD;;;;OAIG;IACH,gBAFa,QAAQ,GAAG,SAAS,CAIhC;IAsCD;;;;;;;OAOG;IACH,cAHW,IAAI,GACF,KAAK,CASjB;IAED;;;;;OAKG;IACH,iBAHW,IAAI,GACF,KAAK,CASjB;IAED;;;;;OAKG;IACH,yBAIC;IAuBD;;;OAGG;IACH,SAFW,MAAM,QAWhB;CACD;sBA5VqB,4BAA4B;6BAYtB,iCAAiC;oCAI1B,cAAc;sBAH5B,mBAAmB;8BAEX,qBAAqB;0BADzB,uBAAuB"}
@@ -104,14 +104,33 @@ export default class Container extends Renderable {
104
104
  * this.backgroundColor.setColor(255, 0, 0);
105
105
  */
106
106
  backgroundColor: Color;
107
- set sortOn(value: string);
107
+ set sortOn(value: "x" | "y" | "z" | "depth");
108
108
  /**
109
- * The property of the child object that should be used to sort on this container.
110
- * Accepted values: "x", "y", "z"
111
- * @type {string}
109
+ * The property of the child object that should be used to sort on
110
+ * this container.
111
+ *
112
+ * - `"x"` / `"y"` — 2D scroll-order, descending on both axes
113
+ * (higher pos.z first; tied z, higher pos.x or pos.y first).
114
+ * Suited to side-scrollers and top-down games.
115
+ * - `"z"` — descending pos.z (higher z draws on top). Default for
116
+ * `Camera2d` — matches the painter's-algorithm 2D layering model
117
+ * where pos.z is "layer index".
118
+ * - `"depth"` — **Camera3d-only.** Ascending squared distance from
119
+ * the active camera (closest first in the array → far drawn first
120
+ * → close drawn on top under `Container.draw`'s reverse-iteration
121
+ * walk). This is the only correct sort for alpha-blended sprites
122
+ * under perspective projection, where neither pos.z nor pos.x/y
123
+ * layering produces correct occlusion (the closer/farther
124
+ * relationship flips as the camera orbits). Set automatically
125
+ * when an `Application` or `Stage` is constructed with
126
+ * `cameraClass: Camera3d`. Has no useful effect under `Camera2d`
127
+ * (ortho projection doesn't need camera-distance ordering) and
128
+ * pays an O(N log N) sort per frame, so don't enable it manually
129
+ * in 2D-only games.
130
+ * @type {"x"|"y"|"z"|"depth"}
112
131
  * @default "z"
113
132
  */
114
- get sortOn(): string;
133
+ get sortOn(): "x" | "y" | "z" | "depth";
115
134
  /**
116
135
  * reset the container, removing all children, and resetting transforms.
117
136
  */
@@ -302,6 +321,16 @@ export default class Container extends Renderable {
302
321
  * @param {boolean} [recursive=false] - recursively sort all containers if true
303
322
  */
304
323
  sort(recursive?: boolean): void;
324
+ /**
325
+ * Synchronous variant of {@link Container#sort}. Sorts immediately
326
+ * — no defer — using the current `_comparator`. Intended for
327
+ * per-frame callers that need the order to be valid for the very
328
+ * next render (e.g. `Camera3d` refreshing the `"depth"` sort after
329
+ * the camera has moved, where waiting for the deferred sort tick
330
+ * would render a stale frame).
331
+ * @param {boolean} [recursive=false] - recursively sort sub-containers
332
+ */
333
+ sortNow(recursive?: boolean): void;
305
334
  /**
306
335
  * Z Sorting function
307
336
  * @ignore
@@ -312,6 +341,23 @@ export default class Container extends Renderable {
312
341
  * @ignore
313
342
  */
314
343
  _sortReverseZ(a: any, b: any): number;
344
+ /**
345
+ * Camera-distance sorting function used by `sortOn = "depth"`.
346
+ * Orders children by ascending squared distance from the cached
347
+ * camera position — closest first in the array, so
348
+ * {@link Container#draw}'s reverse-iteration walk paints far→near
349
+ * (correct painter's algorithm for alpha-blended sprites under
350
+ * perspective). The cached position is refreshed by
351
+ * {@link captureDepthCamera} just before each sort runs; this
352
+ * comparator stays tight (zero allocation, six subtracts + three
353
+ * mul-adds per pair) for the hot O(N log N) path.
354
+ *
355
+ * Container children are `Renderable` instances with an
356
+ * `ObservableVector3d` pos — `pos.z` is always defined, no guard
357
+ * needed here.
358
+ * @ignore
359
+ */
360
+ _sortDepth(a: any, b: any): number;
315
361
  /**
316
362
  * X Sorting function
317
363
  * @ignore
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/renderable/container.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/renderable/container.js"],"names":[],"mappings":"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"}
@@ -70,6 +70,7 @@ export default class Mesh extends Renderable {
70
70
  * @type {number}
71
71
  */
72
72
  vertexCount: number;
73
+ _indicesOriginal: number[];
73
74
  /**
74
75
  * the projected vertex positions, updated each draw call
75
76
  * @type {Float32Array}
@@ -82,10 +83,51 @@ export default class Mesh extends Renderable {
82
83
  */
83
84
  cullBackFaces: boolean;
84
85
  /**
85
- * the texture atlas used by this mesh
86
- * @type {TextureAtlas}
86
+ * Per-material submesh groups, populated when the OBJ
87
+ * contains multiple `usemtl` directives AND a matching MTL
88
+ * is bound via the `material` setting. Each entry slices
89
+ * the shared `indices` buffer; field shape (`start`,
90
+ * `count`, `materialName`) matches the glTF "groups"
91
+ * convention.
92
+ *
93
+ * Under the per-vertex color baking path (tier 2), the
94
+ * `tint` / `opacity` fields here are informational — the
95
+ * actual rendered color is baked into `vertexColors` at
96
+ * construction time. Mutating `groups[i].tint` after
97
+ * construction has no visible effect; use `mesh.tint` for
98
+ * runtime color multiplication, or rebuild the Mesh with
99
+ * new material settings.
100
+ * @type {Array<{materialName: string|null, start: number,
101
+ * count: number, tint: Color, opacity: number}>}
102
+ */
103
+ groups: Array<{
104
+ materialName: string | null;
105
+ start: number;
106
+ count: number;
107
+ tint: Color;
108
+ opacity: number;
109
+ }>;
110
+ /**
111
+ * Per-vertex color buffer (one packed Uint32 per vertex)
112
+ * populated for multi-material meshes. The mesh batcher
113
+ * reads from this when present, pushing the per-vertex
114
+ * color as the `aColor` attribute — so multi-material
115
+ * rendering needs no extra draw calls per material vs
116
+ * single-material rendering (the batcher still chunks
117
+ * very large meshes across multiple draws to fit its
118
+ * vertex/index buffer limits, same as the single-material
119
+ * path). Multiplied at render time by the global
120
+ * `mesh.tint`, so runtime tint mutation still works as
121
+ * expected (flash, fade, team color, etc.).
122
+ *
123
+ * Vertices were split per-material at parse time (each
124
+ * material has its own dedup scope in the OBJ parser), so
125
+ * every vertex belongs to exactly one material group and
126
+ * carries that group's color unambiguously.
127
+ * @type {Uint32Array}
87
128
  */
88
- texture: TextureAtlas;
129
+ vertexColors: Uint32Array;
130
+ texture: any;
89
131
  /**
90
132
  * Projection matrix applied automatically before the model transform in draw().
91
133
  * Defaults to a perspective projection (45° FOV, camera at z=-2.5) suitable for
@@ -108,11 +150,45 @@ export default class Mesh extends Renderable {
108
150
  */
109
151
  _projectVertices(offsetX?: number, offsetY?: number, zScale?: number): void;
110
152
  /**
111
- * Draw the mesh (automatically called by melonJS).
112
- * Projects vertices through projectionMatrix × currentTransform and calls renderer.drawMesh().
113
- * @param {CanvasRenderer|WebGLRenderer} renderer - a renderer instance
153
+ * Project vertices into **world space** for the Camera3d render path.
154
+ * Bypasses {@link Mesh#projectionMatrix} (the self-contained
155
+ * perspective that's meaningful only under Camera2d) and emits
156
+ * vertices that the active 3D camera then projects via its own
157
+ * view + projection matrices, the same way it does for Sprites.
158
+ *
159
+ * Per-vertex math: `currentTransform × originalVertex`, then a uniform
160
+ * scale by `this.width`, a Y-flip (OBJ Y-up → engine Y-down), and a
161
+ * translate to `(offsetX, offsetY, offsetZ)`.
162
+ *
163
+ * @param {number} offsetX - world X to place the mesh center at
164
+ * @param {number} offsetY - world Y to place the mesh center at
165
+ * @param {number} offsetZ - world Z to place the mesh center at
166
+ * @ignore
114
167
  */
115
- draw(renderer: CanvasRenderer | WebGLRenderer): void;
168
+ _projectVerticesWorld(offsetX: number, offsetY: number, offsetZ: number): void;
169
+ /**
170
+ * Build the winding-reversed indices buffer used by the Camera3d
171
+ * world-space path. Called once, lazily, the first time the mesh
172
+ * draws under Camera3d. Why: the world-space path Y-flips vertices
173
+ * on output (a reflection, det = -1), which inverts triangle
174
+ * winding in screen space. Without the swap, `cullBackFaces: true`
175
+ * would end up culling the front faces and the model would look
176
+ * hollow.
177
+ *
178
+ * Both buffers are kept alive — `_indicesOriginal` is the original
179
+ * OBJ-shared (or user-supplied) winding, `_indicesReversed` is the
180
+ * Camera3d-flipped copy. `draw()` swaps `this.indices` between them
181
+ * each frame based on the active camera, so a Mesh that was first
182
+ * drawn under Camera3d and later re-parented to a Camera2d stage
183
+ * (e.g. a level transition into a 2D minigame) gets its original
184
+ * winding back and stays correctly oriented under
185
+ * `cullBackFaces: true`.
186
+ * @ignore
187
+ */
188
+ _setupWorldSpace(): void;
189
+ _indicesReversed: Uint16Array<ArrayBuffer> | undefined;
190
+ _worldSpace: boolean | undefined;
191
+ _useWorldSpace: boolean | undefined;
116
192
  /**
117
193
  * Render the mesh at its current state (transforms, projection, tint) to an offscreen canvas.
118
194
  * The returned canvas can be used with `renderer.drawImage()`, as a `Sprite` image source,
@@ -138,10 +214,9 @@ export default class Mesh extends Renderable {
138
214
  toImageBitmap(): Promise<ImageBitmap>;
139
215
  }
140
216
  import Renderable from "./renderable.js";
141
- import { TextureAtlas } from "./../video/texture/atlas.js";
217
+ import { Color } from "../math/color.ts";
142
218
  import { Matrix3d } from "../math/matrix3d.ts";
143
219
  import { Vector2d } from "../math/vector2d.ts";
144
220
  import { Polygon } from "../geometries/polygon.ts";
145
- import type CanvasRenderer from "./../video/canvas/canvas_renderer.js";
146
- import type WebGLRenderer from "./../video/webgl/webgl_renderer.js";
221
+ import { TextureAtlas } from "./../video/texture/atlas.js";
147
222
  //# sourceMappingURL=mesh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mesh.d.ts","sourceRoot":"","sources":["../../src/renderable/mesh.js"],"names":[],"mappings":"AAsBA;;;;;;;;GAQG;AACH;IACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,eAnCW,MAAM,KACN,MAAM,YAEd;QAA0B,KAAK;QACU,QAAQ;QACR,GAAG;QACJ,OAAO;QACS,OAAO;QACrC,QAAQ;QACT,KAAK,EAAtB,MAAM;QACW,MAAM,EAAvB,MAAM;QACa,aAAa;KACxC,EAqKF;IArIC;;;OAGG;IACH,kBAFU,YAAY,CAEkB;IAExC;;;OAGG;IACH,KAFU,YAAY,CAEA;IAQtB;;;OAGG;IACH,aAFU,MAAM,CAEsB;IAkBvC;;;OAGG;IACH,UAFU,YAAY,CAEgC;IAEtD;;;;OAIG;IACH,eAHU,OAAO,CAIoD;IAgCpE;;;OAGG;IACH,SAFU,YAAY,CAEM;IAiB7B;;;;;;OAMG;IACH,kBAFU,QAAQ,CAEoB;IAetC,cAAc;IACd,wBAEE;IACF,cAAc;IACd,6BAAwB;IAGzB;;;;;;;OAOG;IACH,2BALW,MAAM,YACN,MAAM,WACN,MAAM,QAiBhB;IAED;;;;OAIG;IACH,eAFW,cAAc,GAAC,aAAa,QAKtC;IAyBD;;;;;;;;;;;;OAYG;IACH,YATa,iBAAiB,CAoH7B;IAED;;;;;;;OAOG;IACH,iBALa,OAAO,CAAC,WAAW,CAAC,CAOhC;CACD;uBAvYsB,iBAAiB;6BADX,6BAA6B;yBAPjC,qBAAqB;yBACrB,qBAAqB;wBAHtB,0BAA0B;gCAcnB,sCAAsC;+BACvC,oCAAoC"}
1
+ {"version":3,"file":"mesh.d.ts","sourceRoot":"","sources":["../../src/renderable/mesh.js"],"names":[],"mappings":"AAgFA;;;;;;;;GAQG;AACH;IACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,eAnCW,MAAM,KACN,MAAM,YAEd;QAA0B,KAAK;QACU,QAAQ;QACR,GAAG;QACJ,OAAO;QACS,OAAO;QACrC,QAAQ;QACT,KAAK,EAAtB,MAAM;QACW,MAAM,EAAvB,MAAM;QACa,aAAa;KACxC,EAkQF;IAjOC;;;OAGG;IACH,kBAFU,YAAY,CAEkB;IAExC;;;OAGG;IACH,KAFU,YAAY,CAEA;IAQtB;;;OAGG;IACH,aAFU,MAAM,CAEsB;IA2BvC,2BAAoC;IAGpC;;;OAGG;IACH,UAFU,YAAY,CAEgC;IAEtD;;;;OAIG;IACH,eAHU,OAAO,CAIoD;IAsBpE;;;;;;;;;;;;;;;;;OAiBG;IACH,QAHU,KAAK,CAAC;QAAC,YAAY,EAAE,MAAM,GAAC,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QACrD,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC,CAIhD;IAsBF;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAFU,WAAW,CAEgC;IAgDtD,aAAiD;IAEjD;;;;;;OAMG;IACH,kBAFU,QAAQ,CAEoB;IAetC,cAAc;IACd,wBAEE;IACF,cAAc;IACd,6BAAwB;IAGzB;;;;;;;OAOG;IACH,2BALW,MAAM,YACN,MAAM,WACN,MAAM,QAiBhB;IAED;;;;;;;;;;;;;;;OAeG;IACH,+BALW,MAAM,WACN,MAAM,WACN,MAAM,QAiChB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,yBAUC;IAFA,uDAA2B;IAC3B,iCAAuB;IAoBvB,oCAAuD;IAyFxD;;;;;;;;;;;;OAYG;IACH,YATa,iBAAiB,CAoH7B;IAED;;;;;;;OAOG;IACH,iBALa,OAAO,CAAC,WAAW,CAAC,CAOhC;CACD;uBAnrBsB,iBAAiB;sBAVlB,kBAAkB;yBACf,qBAAqB;yBACrB,qBAAqB;wBAJtB,0BAA0B;6BAWrB,6BAA6B"}
@@ -260,7 +260,7 @@ export default class Renderable extends Rect {
260
260
  * cache the absolute position of the renderable
261
261
  * @ignore
262
262
  */
263
- _absPos: import("../index.ts").Vector2d | undefined;
263
+ _absPos: import("../index.ts").Vector3d | undefined;
264
264
  /**
265
265
  * keep track of when we flip
266
266
  * @ignore
@@ -474,10 +474,15 @@ export default class Renderable extends Rect {
474
474
  */
475
475
  updateBounds(absolute?: boolean): Bounds;
476
476
  /**
477
- * return the renderable absolute position in the game world
478
- * @returns {Vector2d}
477
+ * return the renderable absolute position in the game world. The
478
+ * returned vector is a {@link Vector3d} so the z component is summed
479
+ * across the ancestor chain too — important for {@link Camera3d}'s
480
+ * frustum culling, which previously read `obj.depth` (local
481
+ * `pos.z`) and mis-culled children nested under a container with
482
+ * its own non-zero depth.
483
+ * @returns {Vector3d}
479
484
  */
480
- getAbsolutePosition(): Vector2d;
485
+ getAbsolutePosition(): Vector3d;
481
486
  /**
482
487
  * Prepare the rendering context before drawing (automatically called by melonJS).
483
488
  * This will apply any defined transforms, anchor point, tint or blend mode and translate the context accordingly to this renderable position.
@@ -1 +1 @@
1
- {"version":3,"file":"renderable.d.ts","sourceRoot":"","sources":["../../src/renderable/renderable.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderable.d.ts","sourceRoot":"","sources":["../../src/renderable/renderable.js"],"names":[],"mappings":"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"}
@@ -6,6 +6,14 @@ import type Light2d from "./../renderable/light2d.js";
6
6
  import type Renderer from "./../video/renderer.js";
7
7
  interface StageSettings {
8
8
  cameras: Camera2d[];
9
+ /**
10
+ * Default camera class to instantiate when this stage has no
11
+ * explicit `cameras` list. Overrides any app-level `cameraClass`
12
+ * setting for this specific stage. Built-in stages (e.g.
13
+ * {@link DefaultLoadingScreen}) pin this to {@link Camera2d} so
14
+ * the loader stays 2D regardless of app-wide `cameraClass`.
15
+ */
16
+ cameraClass?: new (minX: number, minY: number, maxX: number, maxY: number) => Camera2d;
9
17
  onResetEvent?: (app: Application, ...args: unknown[]) => void;
10
18
  onDestroyEvent?: (app: Application) => void;
11
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../../src/state/stage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,iCAAiC,CAAC;AAC/D,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,4BAA4B,CAAC;AAEtD,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AAEnD,UAAU,aAAa;IACtB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC9D,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;CAC5C;AAUD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACzB;;;;OAIG;IACH,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7B;;;;;OAKG;IACH,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAE5B;;;;OAIG;IACH,YAAY,EAAE,KAAK,CAAC;IAEpB;;;;;;;;OAQG;IACH,oBAAoB,EAAE,KAAK,CAAC;IAE5B;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC;IAExB;;;;;OAKG;gBACS,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAS7C;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIpC;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI;IAoCtD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAgB3B;;;;;;;;;OASG;IACH,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAM5C;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CACX,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,EAChB,UAAU,GAAE,MAAuC,EACnD,UAAU,GAAE,MAAuC,GACjD,IAAI;IAiCP;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAkB/B;;;;;;;OAOG;IACH,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAOxD;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;CAMtC"}
1
+ {"version":3,"file":"stage.d.ts","sourceRoot":"","sources":["../../src/state/stage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,iCAAiC,CAAC;AAC/D,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,4BAA4B,CAAC;AAEtD,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AAEnD,UAAU,aAAa;IACtB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,KACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,KACR,QAAQ,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC9D,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;CAC5C;AAUD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACzB;;;;OAIG;IACH,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7B;;;;;OAKG;IACH,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAE5B;;;;OAIG;IACH,YAAY,EAAE,KAAK,CAAC;IAEpB;;;;;;;;OAQG;IACH,oBAAoB,EAAE,KAAK,CAAC;IAE5B;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC;IAExB;;;;;OAKG;gBACS,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAS7C;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIpC;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI;IAsHtD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAgB3B;;;;;;;;;OASG;IACH,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAM5C;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CACX,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,QAAQ,EAChB,UAAU,GAAE,MAAuC,EACnD,UAAU,GAAE,MAAuC,GACjD,IAAI;IAiCP;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAkB/B;;;;;;;OAOG;IACH,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAOxD;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;CAMtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,qBAAqB,CAAC;AAwOxC;;GAEG;AACH,QAAA,MAAM,KAAK;IACV;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;;OAGG;;IAGH;;;;;;;OAOG;;IAGH;;;OAGG;4BACoB,OAAO,GAAW,IAAI;IAqB7C;;;OAGG;kBACU,OAAO,GAAW,IAAI;IAkBnC;;;OAGG;oBACY,OAAO,GAAW,IAAI;IAiBrC;;;OAGG;mBACW,OAAO,GAAW,IAAI;IAmBpC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;qBACc,MAAM,UAAS,OAAO,GAAW,OAAO,CAAC,IAAI,CAAC;IAkC/D;;;OAGG;iBACU,OAAO;IAIpB;;;OAGG;gBACS,OAAO;IAInB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;iBACU,MAAM,SAAS,KAAK,UAAS,OAAO,GAAW,IAAI;IAchE;;;;;OAKG;kBACU,MAAM,GAAY,KAAK,GAAG,SAAS;IAQhD;;;;OAIG;eACQ,KAAK,GAAG,SAAS;IAI5B;;;;;;;;;;;;;;;;;;OAkBG;uBAEM,MAAM,GAAG,MAAM,SAChB,MAAM,aACH,MAAM,UAEb,OAAO,0BAA0B,EAAE,OAAO,GAC1C,OAAO,0BAA0B,EAAE,OAAO,GAC3C,IAAI;IAOP;;;;OAIG;2BACoB,MAAM,UAAU,OAAO,GAAG,IAAI;IAIrD;;;;;;;;;OASG;oBAEO,MAAM,gBACF,OAAO,gBACN,OAAO,EAAE,GACrB,IAAI;IAoGP;;;;OAIG;uBACgB,MAAM,GAAG,OAAO;CAGnC,CAAC;AACF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/state/state.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,qBAAqB,CAAC;AAwOxC;;GAEG;AACH,QAAA,MAAM,KAAK;IACV;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;;OAGG;;IAGH;;;;;;;OAOG;;IAGH;;;OAGG;4BACoB,OAAO,GAAW,IAAI;IAqB7C;;;OAGG;kBACU,OAAO,GAAW,IAAI;IAkBnC;;;OAGG;oBACY,OAAO,GAAW,IAAI;IAiBrC;;;OAGG;mBACW,OAAO,GAAW,IAAI;IAmBpC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;qBACc,MAAM,UAAS,OAAO,GAAW,OAAO,CAAC,IAAI,CAAC;IAkC/D;;;OAGG;iBACU,OAAO;IAIpB;;;OAGG;gBACS,OAAO;IAInB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;iBACU,MAAM,SAAS,KAAK,UAAS,OAAO,GAAW,IAAI;IAchE;;;;;OAKG;kBACU,MAAM,GAAY,KAAK,GAAG,SAAS;IAQhD;;;;OAIG;eACQ,KAAK,GAAG,SAAS;IAI5B;;;;;;;;;;;;;;;;;;OAkBG;uBAEM,MAAM,GAAG,MAAM,SAChB,MAAM,aACH,MAAM,UAEb,OAAO,0BAA0B,EAAE,OAAO,GAC1C,OAAO,0BAA0B,EAAE,OAAO,GAC3C,IAAI;IAOP;;;;OAIG;2BACoB,MAAM,UAAU,OAAO,GAAG,IAAI;IAIrD;;;;;;;;;OASG;oBAEO,MAAM,gBACF,OAAO,gBACN,OAAO,EAAE,GACrB,IAAI;IA4FP;;;;OAIG;uBACgB,MAAM,GAAG,OAAO;CAGnC,CAAC;AACF,eAAe,KAAK,CAAC"}