tilemap-parser 0.1.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 (191) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/dist/core/errors.d.ts +13 -0
  4. package/dist/core/errors.d.ts.map +1 -0
  5. package/dist/core/errors.js +13 -0
  6. package/dist/core/errors.js.map +1 -0
  7. package/dist/core/index.d.ts +7 -0
  8. package/dist/core/index.d.ts.map +1 -0
  9. package/dist/core/index.js +7 -0
  10. package/dist/core/index.js.map +1 -0
  11. package/dist/core/loaders.d.ts +19 -0
  12. package/dist/core/loaders.d.ts.map +1 -0
  13. package/dist/core/loaders.js +50 -0
  14. package/dist/core/loaders.js.map +1 -0
  15. package/dist/core/parser/animation.d.ts +35 -0
  16. package/dist/core/parser/animation.d.ts.map +1 -0
  17. package/dist/core/parser/animation.js +178 -0
  18. package/dist/core/parser/animation.js.map +1 -0
  19. package/dist/core/parser/coerce.d.ts +13 -0
  20. package/dist/core/parser/coerce.d.ts.map +1 -0
  21. package/dist/core/parser/coerce.js +109 -0
  22. package/dist/core/parser/coerce.js.map +1 -0
  23. package/dist/core/parser/collision.d.ts +98 -0
  24. package/dist/core/parser/collision.d.ts.map +1 -0
  25. package/dist/core/parser/collision.js +486 -0
  26. package/dist/core/parser/collision.js.map +1 -0
  27. package/dist/core/parser/index.d.ts +7 -0
  28. package/dist/core/parser/index.d.ts.map +1 -0
  29. package/dist/core/parser/index.js +7 -0
  30. package/dist/core/parser/index.js.map +1 -0
  31. package/dist/core/parser/map.d.ts +132 -0
  32. package/dist/core/parser/map.d.ts.map +1 -0
  33. package/dist/core/parser/map.js +416 -0
  34. package/dist/core/parser/map.js.map +1 -0
  35. package/dist/core/parser/node.d.ts +14 -0
  36. package/dist/core/parser/node.d.ts.map +1 -0
  37. package/dist/core/parser/node.js +40 -0
  38. package/dist/core/parser/node.js.map +1 -0
  39. package/dist/core/parser/particle.d.ts +68 -0
  40. package/dist/core/parser/particle.d.ts.map +1 -0
  41. package/dist/core/parser/particle.js +341 -0
  42. package/dist/core/parser/particle.js.map +1 -0
  43. package/dist/core/parser/tileanim.d.ts +31 -0
  44. package/dist/core/parser/tileanim.d.ts.map +1 -0
  45. package/dist/core/parser/tileanim.js +182 -0
  46. package/dist/core/parser/tileanim.js.map +1 -0
  47. package/dist/core/runtime/body.d.ts +27 -0
  48. package/dist/core/runtime/body.d.ts.map +1 -0
  49. package/dist/core/runtime/body.js +105 -0
  50. package/dist/core/runtime/body.js.map +1 -0
  51. package/dist/core/runtime/collision/hit.d.ts +19 -0
  52. package/dist/core/runtime/collision/hit.d.ts.map +1 -0
  53. package/dist/core/runtime/collision/hit.js +87 -0
  54. package/dist/core/runtime/collision/hit.js.map +1 -0
  55. package/dist/core/runtime/collision/index.d.ts +4 -0
  56. package/dist/core/runtime/collision/index.d.ts.map +1 -0
  57. package/dist/core/runtime/collision/index.js +4 -0
  58. package/dist/core/runtime/collision/index.js.map +1 -0
  59. package/dist/core/runtime/collision/manager.d.ts +20 -0
  60. package/dist/core/runtime/collision/manager.d.ts.map +1 -0
  61. package/dist/core/runtime/collision/manager.js +142 -0
  62. package/dist/core/runtime/collision/manager.js.map +1 -0
  63. package/dist/core/runtime/collision/shapes.d.ts +10 -0
  64. package/dist/core/runtime/collision/shapes.d.ts.map +1 -0
  65. package/dist/core/runtime/collision/shapes.js +193 -0
  66. package/dist/core/runtime/collision/shapes.js.map +1 -0
  67. package/dist/core/runtime/collision_cache.d.ts +17 -0
  68. package/dist/core/runtime/collision_cache.d.ts.map +1 -0
  69. package/dist/core/runtime/collision_cache.js +78 -0
  70. package/dist/core/runtime/collision_cache.js.map +1 -0
  71. package/dist/core/runtime/index.d.ts +9 -0
  72. package/dist/core/runtime/index.d.ts.map +1 -0
  73. package/dist/core/runtime/index.js +9 -0
  74. package/dist/core/runtime/index.js.map +1 -0
  75. package/dist/core/runtime/movement/grounded.d.ts +12 -0
  76. package/dist/core/runtime/movement/grounded.d.ts.map +1 -0
  77. package/dist/core/runtime/movement/grounded.js +97 -0
  78. package/dist/core/runtime/movement/grounded.js.map +1 -0
  79. package/dist/core/runtime/movement/index.d.ts +8 -0
  80. package/dist/core/runtime/movement/index.d.ts.map +1 -0
  81. package/dist/core/runtime/movement/index.js +8 -0
  82. package/dist/core/runtime/movement/index.js.map +1 -0
  83. package/dist/core/runtime/movement/platformer.d.ts +15 -0
  84. package/dist/core/runtime/movement/platformer.d.ts.map +1 -0
  85. package/dist/core/runtime/movement/platformer.js +419 -0
  86. package/dist/core/runtime/movement/platformer.js.map +1 -0
  87. package/dist/core/runtime/movement/queries.d.ts +21 -0
  88. package/dist/core/runtime/movement/queries.d.ts.map +1 -0
  89. package/dist/core/runtime/movement/queries.js +326 -0
  90. package/dist/core/runtime/movement/queries.js.map +1 -0
  91. package/dist/core/runtime/movement/rpg.d.ts +10 -0
  92. package/dist/core/runtime/movement/rpg.d.ts.map +1 -0
  93. package/dist/core/runtime/movement/rpg.js +47 -0
  94. package/dist/core/runtime/movement/rpg.js.map +1 -0
  95. package/dist/core/runtime/movement/runner.d.ts +52 -0
  96. package/dist/core/runtime/movement/runner.d.ts.map +1 -0
  97. package/dist/core/runtime/movement/runner.js +220 -0
  98. package/dist/core/runtime/movement/runner.js.map +1 -0
  99. package/dist/core/runtime/movement/slide.d.ts +12 -0
  100. package/dist/core/runtime/movement/slide.d.ts.map +1 -0
  101. package/dist/core/runtime/movement/slide.js +145 -0
  102. package/dist/core/runtime/movement/slide.js.map +1 -0
  103. package/dist/core/runtime/movement/types.d.ts +22 -0
  104. package/dist/core/runtime/movement/types.d.ts.map +1 -0
  105. package/dist/core/runtime/movement/types.js +21 -0
  106. package/dist/core/runtime/movement/types.js.map +1 -0
  107. package/dist/core/runtime/navigation/index.d.ts +4 -0
  108. package/dist/core/runtime/navigation/index.d.ts.map +1 -0
  109. package/dist/core/runtime/navigation/index.js +4 -0
  110. package/dist/core/runtime/navigation/index.js.map +1 -0
  111. package/dist/core/runtime/navigation/nav_grid.d.ts +36 -0
  112. package/dist/core/runtime/navigation/nav_grid.d.ts.map +1 -0
  113. package/dist/core/runtime/navigation/nav_grid.js +245 -0
  114. package/dist/core/runtime/navigation/nav_grid.js.map +1 -0
  115. package/dist/core/runtime/navigation/path_follower.d.ts +19 -0
  116. package/dist/core/runtime/navigation/path_follower.d.ts.map +1 -0
  117. package/dist/core/runtime/navigation/path_follower.js +59 -0
  118. package/dist/core/runtime/navigation/path_follower.js.map +1 -0
  119. package/dist/core/runtime/navigation/pathfinder.d.ts +8 -0
  120. package/dist/core/runtime/navigation/pathfinder.d.ts.map +1 -0
  121. package/dist/core/runtime/navigation/pathfinder.js +114 -0
  122. package/dist/core/runtime/navigation/pathfinder.js.map +1 -0
  123. package/dist/core/runtime/polygon_query.d.ts +13 -0
  124. package/dist/core/runtime/polygon_query.d.ts.map +1 -0
  125. package/dist/core/runtime/polygon_query.js +462 -0
  126. package/dist/core/runtime/polygon_query.js.map +1 -0
  127. package/dist/core/runtime/protocols.d.ts +15 -0
  128. package/dist/core/runtime/protocols.d.ts.map +1 -0
  129. package/dist/core/runtime/protocols.js +2 -0
  130. package/dist/core/runtime/protocols.js.map +1 -0
  131. package/dist/core/runtime/world.d.ts +47 -0
  132. package/dist/core/runtime/world.d.ts.map +1 -0
  133. package/dist/core/runtime/world.js +272 -0
  134. package/dist/core/runtime/world.js.map +1 -0
  135. package/dist/core/utils/geometry.d.ts +25 -0
  136. package/dist/core/utils/geometry.d.ts.map +1 -0
  137. package/dist/core/utils/geometry.js +485 -0
  138. package/dist/core/utils/geometry.js.map +1 -0
  139. package/dist/core/utils/index.d.ts +2 -0
  140. package/dist/core/utils/index.d.ts.map +1 -0
  141. package/dist/core/utils/index.js +2 -0
  142. package/dist/core/utils/index.js.map +1 -0
  143. package/dist/core/vec.d.ts +13 -0
  144. package/dist/core/vec.d.ts.map +1 -0
  145. package/dist/core/vec.js +20 -0
  146. package/dist/core/vec.js.map +1 -0
  147. package/dist/phaser/anim.d.ts +8 -0
  148. package/dist/phaser/anim.d.ts.map +1 -0
  149. package/dist/phaser/anim.js +24 -0
  150. package/dist/phaser/anim.js.map +1 -0
  151. package/dist/phaser/camera.d.ts +29 -0
  152. package/dist/phaser/camera.d.ts.map +1 -0
  153. package/dist/phaser/camera.js +19 -0
  154. package/dist/phaser/camera.js.map +1 -0
  155. package/dist/phaser/images.d.ts +13 -0
  156. package/dist/phaser/images.d.ts.map +1 -0
  157. package/dist/phaser/images.js +40 -0
  158. package/dist/phaser/images.js.map +1 -0
  159. package/dist/phaser/index.d.ts +12 -0
  160. package/dist/phaser/index.d.ts.map +1 -0
  161. package/dist/phaser/index.js +12 -0
  162. package/dist/phaser/index.js.map +1 -0
  163. package/dist/phaser/keys.d.ts +11 -0
  164. package/dist/phaser/keys.d.ts.map +1 -0
  165. package/dist/phaser/keys.js +29 -0
  166. package/dist/phaser/keys.js.map +1 -0
  167. package/dist/phaser/loader.d.ts +9 -0
  168. package/dist/phaser/loader.d.ts.map +1 -0
  169. package/dist/phaser/loader.js +23 -0
  170. package/dist/phaser/loader.js.map +1 -0
  171. package/dist/phaser/objects.d.ts +20 -0
  172. package/dist/phaser/objects.d.ts.map +1 -0
  173. package/dist/phaser/objects.js +56 -0
  174. package/dist/phaser/objects.js.map +1 -0
  175. package/dist/phaser/particles.d.ts +34 -0
  176. package/dist/phaser/particles.d.ts.map +1 -0
  177. package/dist/phaser/particles.js +24 -0
  178. package/dist/phaser/particles.js.map +1 -0
  179. package/dist/phaser/spawns.d.ts +8 -0
  180. package/dist/phaser/spawns.d.ts.map +1 -0
  181. package/dist/phaser/spawns.js +29 -0
  182. package/dist/phaser/spawns.js.map +1 -0
  183. package/dist/phaser/sprites.d.ts +23 -0
  184. package/dist/phaser/sprites.d.ts.map +1 -0
  185. package/dist/phaser/sprites.js +34 -0
  186. package/dist/phaser/sprites.js.map +1 -0
  187. package/dist/phaser/tiles.d.ts +16 -0
  188. package/dist/phaser/tiles.d.ts.map +1 -0
  189. package/dist/phaser/tiles.js +76 -0
  190. package/dist/phaser/tiles.js.map +1 -0
  191. package/package.json +79 -0
@@ -0,0 +1,485 @@
1
+ import { CapsuleShape, CircleShape, CollisionPolygon, RectangleShape, } from "../parser/collision.js";
2
+ const EPS = 0.0001;
3
+ export function aabbOverlap(a, b) {
4
+ const [l1, t1, r1, b1] = a;
5
+ const [l2, t2, r2, b2] = b;
6
+ return !(r1 < l2 || r2 < l1 || b1 < t2 || b2 < t1);
7
+ }
8
+ export function getShapeAabb(x, y, shape) {
9
+ if (shape instanceof RectangleShape) {
10
+ const left = x + shape.offset[0];
11
+ const top = y + shape.offset[1];
12
+ return [left, top, left + shape.width, top + shape.height];
13
+ }
14
+ if (shape instanceof CircleShape) {
15
+ const cx = x + shape.offset[0];
16
+ const cy = y + shape.offset[1];
17
+ const r = shape.radius;
18
+ return [cx - r, cy - r, cx + r, cy + r];
19
+ }
20
+ if (shape instanceof CapsuleShape) {
21
+ const ox = x + shape.offset[0];
22
+ const oy = y + shape.offset[1];
23
+ const r = shape.radius;
24
+ return [ox - r, oy - r, ox + r, oy + shape.height + r];
25
+ }
26
+ if (shape instanceof CollisionPolygon) {
27
+ const verts = shape.vertices;
28
+ const first = verts[0];
29
+ if (first === undefined) {
30
+ throw new TypeError("Cannot compute AABB of an empty polygon");
31
+ }
32
+ let minX = first[0] + x;
33
+ let maxX = minX;
34
+ let minY = first[1] + y;
35
+ let maxY = minY;
36
+ for (let i = 1; i < verts.length; i += 1) {
37
+ const v = verts[i];
38
+ if (v === undefined)
39
+ continue;
40
+ const wx = v[0] + x;
41
+ const wy = v[1] + y;
42
+ if (wx < minX)
43
+ minX = wx;
44
+ else if (wx > maxX)
45
+ maxX = wx;
46
+ if (wy < minY)
47
+ minY = wy;
48
+ else if (wy > maxY)
49
+ maxY = wy;
50
+ }
51
+ return [minX, minY, maxX, maxY];
52
+ }
53
+ throw new TypeError(`Unsupported shape type: ${shape.kind ?? typeof shape}`);
54
+ }
55
+ export function circleVsCircle(c1Center, c1Radius, c2Center, c2Radius) {
56
+ const dx = c2Center[0] - c1Center[0];
57
+ const dy = c2Center[1] - c1Center[1];
58
+ const distSq = dx * dx + dy * dy;
59
+ const radiusSum = c1Radius + c2Radius;
60
+ if (distSq > radiusSum * radiusSum)
61
+ return null;
62
+ const dist = Math.sqrt(distSq);
63
+ if (dist < EPS) {
64
+ return { normal: [1.0, 0.0], depth: radiusSum };
65
+ }
66
+ return { normal: [dx / dist, dy / dist], depth: radiusSum - dist };
67
+ }
68
+ export function rectVsRect(r1Bounds, r2Bounds) {
69
+ if (!aabbOverlap(r1Bounds, r2Bounds))
70
+ return null;
71
+ const [l1, t1, r1, b1] = r1Bounds;
72
+ const [l2, t2, r2, b2] = r2Bounds;
73
+ const overlapX = Math.min(r1, r2) - Math.max(l1, l2);
74
+ const overlapY = Math.min(b1, b2) - Math.max(t1, t2);
75
+ if (overlapX < overlapY) {
76
+ return {
77
+ normal: l1 + r1 < l2 + r2 ? [1.0, 0.0] : [-1.0, 0.0],
78
+ depth: overlapX,
79
+ };
80
+ }
81
+ return {
82
+ normal: t1 + b1 < t2 + b2 ? [0.0, 1.0] : [0.0, -1.0],
83
+ depth: overlapY,
84
+ };
85
+ }
86
+ export function rectVsCircle(rectBounds, circleCenter, circleRadius) {
87
+ const [l, t, r, b] = rectBounds;
88
+ const [cx, cy] = circleCenter;
89
+ const closestX = Math.max(l, Math.min(cx, r));
90
+ const closestY = Math.max(t, Math.min(cy, b));
91
+ const dx = cx - closestX;
92
+ const dy = cy - closestY;
93
+ const distSq = dx * dx + dy * dy;
94
+ if (distSq > circleRadius * circleRadius)
95
+ return null;
96
+ const dist = Math.sqrt(distSq);
97
+ if (dist < EPS) {
98
+ const distLeft = cx - l;
99
+ const distRight = r - cx;
100
+ const distTop = cy - t;
101
+ const distBottom = b - cy;
102
+ const minDist = Math.min(distLeft, distRight, distTop, distBottom);
103
+ if (minDist === distLeft) {
104
+ return { normal: [-1.0, 0.0], depth: circleRadius + distLeft };
105
+ }
106
+ if (minDist === distRight) {
107
+ return { normal: [1.0, 0.0], depth: circleRadius + distRight };
108
+ }
109
+ if (minDist === distTop) {
110
+ return { normal: [0.0, -1.0], depth: circleRadius + distTop };
111
+ }
112
+ return { normal: [0.0, 1.0], depth: circleRadius + distBottom };
113
+ }
114
+ return { normal: [dx / dist, dy / dist], depth: circleRadius - dist };
115
+ }
116
+ function projectPolygon(vertices, axis) {
117
+ const [ax, ay] = axis;
118
+ const v0 = vertices[0];
119
+ if (v0 === undefined)
120
+ return [0, 0];
121
+ let projMin = v0[0] * ax + v0[1] * ay;
122
+ let projMax = projMin;
123
+ for (let i = 1; i < vertices.length; i += 1) {
124
+ const v = vertices[i];
125
+ if (v === undefined)
126
+ continue;
127
+ const dot = v[0] * ax + v[1] * ay;
128
+ if (dot < projMin)
129
+ projMin = dot;
130
+ else if (dot > projMax)
131
+ projMax = dot;
132
+ }
133
+ return [projMin, projMax];
134
+ }
135
+ export function polygonVsPolygon(p1Vertices, p2Vertices) {
136
+ const n1 = p1Vertices.length;
137
+ const n2 = p2Vertices.length;
138
+ let c1x = 0;
139
+ let c1y = 0;
140
+ for (const v of p1Vertices) {
141
+ c1x += v[0];
142
+ c1y += v[1];
143
+ }
144
+ let c2x = 0;
145
+ let c2y = 0;
146
+ for (const v of p2Vertices) {
147
+ c2x += v[0];
148
+ c2y += v[1];
149
+ }
150
+ c1x /= n1;
151
+ c1y /= n1;
152
+ c2x /= n2;
153
+ c2y /= n2;
154
+ const toC2X = c2x - c1x;
155
+ const toC2Y = c2y - c1y;
156
+ let minOverlap = Infinity;
157
+ let bestAxis = null;
158
+ const testEdges = (verts) => {
159
+ const n = verts.length;
160
+ for (let i = 0; i < n; i += 1) {
161
+ const a = verts[i];
162
+ const b = verts[(i + 1) % n];
163
+ if (a === undefined || b === undefined)
164
+ continue;
165
+ const ex = b[0] - a[0];
166
+ const ey = b[1] - a[1];
167
+ const edgeLen = Math.sqrt(ex * ex + ey * ey);
168
+ if (edgeLen < EPS)
169
+ continue;
170
+ const axis = [-ey / edgeLen, ex / edgeLen];
171
+ const [min1, max1] = projectPolygon(p1Vertices, axis);
172
+ const [min2, max2] = projectPolygon(p2Vertices, axis);
173
+ if (max1 < min2 || max2 < min1)
174
+ return false;
175
+ const overlap = Math.min(max1, max2) - Math.max(min1, min2);
176
+ if (overlap < minOverlap) {
177
+ minOverlap = overlap;
178
+ bestAxis = axis;
179
+ }
180
+ }
181
+ return true;
182
+ };
183
+ if (!testEdges(p1Vertices))
184
+ return null;
185
+ if (!testEdges(p2Vertices))
186
+ return null;
187
+ const axis = bestAxis;
188
+ if (axis === null) {
189
+ return { normal: [1.0, 0.0], depth: 0.0 };
190
+ }
191
+ let ax = axis[0] ?? 0;
192
+ let ay = axis[1] ?? 0;
193
+ if (ax * toC2X + ay * toC2Y < 0) {
194
+ ax = -ax;
195
+ ay = -ay;
196
+ }
197
+ return { normal: [ax, ay], depth: minOverlap };
198
+ }
199
+ function pointInPolygon(px, py, vertices) {
200
+ const n = vertices.length;
201
+ let inside = false;
202
+ let j = n - 1;
203
+ for (let i = 0; i < n; i += 1) {
204
+ const vi = vertices[i];
205
+ const vj = vertices[j];
206
+ if (vi === undefined || vj === undefined) {
207
+ j = i;
208
+ continue;
209
+ }
210
+ if (vi[1] > py !== vj[1] > py &&
211
+ px < ((vj[0] - vi[0]) * (py - vi[1])) / (vj[1] - vi[1]) + vi[0]) {
212
+ inside = !inside;
213
+ }
214
+ j = i;
215
+ }
216
+ return inside;
217
+ }
218
+ function closestPointOnSegment(px, py, ax, ay, bx, by) {
219
+ const abx = bx - ax;
220
+ const aby = by - ay;
221
+ const abLenSq = abx * abx + aby * aby;
222
+ if (abLenSq < EPS)
223
+ return [ax, ay];
224
+ const t = Math.max(0.0, Math.min(1.0, ((px - ax) * abx + (py - ay) * aby) / abLenSq));
225
+ return [ax + t * abx, ay + t * aby];
226
+ }
227
+ export function polygonVsCircle(polyVertices, circleCenter, circleRadius) {
228
+ const [cx, cy] = circleCenter;
229
+ const r = circleRadius;
230
+ const inside = pointInPolygon(cx, cy, polyVertices);
231
+ let minDistSq = Infinity;
232
+ let bestNormalX = 0.0;
233
+ let bestNormalY = 0.0;
234
+ const n = polyVertices.length;
235
+ for (let i = 0; i < n; i += 1) {
236
+ const a = polyVertices[i];
237
+ const b = polyVertices[(i + 1) % n];
238
+ if (a === undefined || b === undefined)
239
+ continue;
240
+ const [ax, ay] = a;
241
+ const [bx, by] = b;
242
+ const [closestX, closestY] = closestPointOnSegment(cx, cy, ax, ay, bx, by);
243
+ const dx = cx - closestX;
244
+ const dy = cy - closestY;
245
+ const distSq = dx * dx + dy * dy;
246
+ if (distSq < minDistSq) {
247
+ minDistSq = distSq;
248
+ const dist = distSq > 0.0 ? Math.sqrt(distSq) : 0.0;
249
+ if (dist > EPS) {
250
+ bestNormalX = dx / dist;
251
+ bestNormalY = dy / dist;
252
+ }
253
+ else {
254
+ const ex = bx - ax;
255
+ const ey = by - ay;
256
+ const edgeLen = Math.sqrt(ex * ex + ey * ey);
257
+ if (edgeLen > EPS) {
258
+ bestNormalX = -ey / edgeLen;
259
+ bestNormalY = ex / edgeLen;
260
+ }
261
+ else {
262
+ bestNormalX = 1.0;
263
+ bestNormalY = 0.0;
264
+ }
265
+ }
266
+ }
267
+ }
268
+ if (inside) {
269
+ return {
270
+ normal: [bestNormalX, bestNormalY],
271
+ depth: r + Math.sqrt(minDistSq),
272
+ };
273
+ }
274
+ if (minDistSq > r * r)
275
+ return null;
276
+ return {
277
+ normal: [bestNormalX, bestNormalY],
278
+ depth: r - Math.sqrt(minDistSq),
279
+ };
280
+ }
281
+ export function polygonVsRect(polyVertices, rectBounds) {
282
+ const [l, t, r, b] = rectBounds;
283
+ const rectVerts = [
284
+ [l, t],
285
+ [r, t],
286
+ [r, b],
287
+ [l, b],
288
+ ];
289
+ return polygonVsPolygon(polyVertices, rectVerts);
290
+ }
291
+ function segmentClosestPointToPoint(ax, ay, bx, by, px, py) {
292
+ const abx = bx - ax;
293
+ const aby = by - ay;
294
+ const abLenSq = abx * abx + aby * aby;
295
+ if (abLenSq < EPS)
296
+ return [ax, ay];
297
+ const t = Math.max(0.0, Math.min(1.0, ((px - ax) * abx + (py - ay) * aby) / abLenSq));
298
+ return [ax + t * abx, ay + t * aby];
299
+ }
300
+ function segmentClosestPointToAabb(ax, ay, bx, by, l, top, r, b) {
301
+ const abx = bx - ax;
302
+ const aby = by - ay;
303
+ const abLenSq = abx * abx + aby * aby;
304
+ let bestDsq = Infinity;
305
+ let bestX = ax;
306
+ let bestY = ay;
307
+ const attempt = (px, py) => {
308
+ const cpx = Math.max(l, Math.min(px, r));
309
+ const cpy = Math.max(top, Math.min(py, b));
310
+ const dx = px - cpx;
311
+ const dy = py - cpy;
312
+ const dsq = dx * dx + dy * dy;
313
+ if (dsq < bestDsq) {
314
+ bestDsq = dsq;
315
+ bestX = px;
316
+ bestY = py;
317
+ }
318
+ };
319
+ attempt(ax, ay);
320
+ attempt(bx, by);
321
+ if (abLenSq > EPS) {
322
+ for (const [cornerX, cornerY] of [
323
+ [l, top],
324
+ [r, top],
325
+ [r, b],
326
+ [l, b],
327
+ ]) {
328
+ const tProj = ((cornerX - ax) * abx + (cornerY - ay) * aby) / abLenSq;
329
+ const tClamped = Math.max(0.0, Math.min(1.0, tProj));
330
+ attempt(ax + tClamped * abx, ay + tClamped * aby);
331
+ }
332
+ }
333
+ return [bestX, bestY, bestDsq];
334
+ }
335
+ function segmentsClosestPoints(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {
336
+ const d1x = a2x - a1x;
337
+ const d1y = a2y - a1y;
338
+ const d2x = b2x - b1x;
339
+ const d2y = b2y - b1y;
340
+ const d1LenSq = d1x * d1x + d1y * d1y;
341
+ const d2LenSq = d2x * d2x + d2y * d2y;
342
+ if (d1LenSq < EPS && d2LenSq < EPS) {
343
+ const dx = b1x - a1x;
344
+ const dy = b1y - a1y;
345
+ return [[a1x, a1y], [b1x, b1y], dx * dx + dy * dy];
346
+ }
347
+ if (d1LenSq < EPS) {
348
+ const [px, py] = segmentClosestPointToPoint(b1x, b1y, b2x, b2y, a1x, a1y);
349
+ const dx = px - a1x;
350
+ const dy = py - a1y;
351
+ return [[a1x, a1y], [px, py], dx * dx + dy * dy];
352
+ }
353
+ if (d2LenSq < EPS) {
354
+ const [px, py] = segmentClosestPointToPoint(a1x, a1y, a2x, a2y, b1x, b1y);
355
+ const dx = px - b1x;
356
+ const dy = py - b1y;
357
+ return [[px, py], [b1x, b1y], dx * dx + dy * dy];
358
+ }
359
+ const rx = a1x - b1x;
360
+ const ry = a1y - b1y;
361
+ const a = d1LenSq;
362
+ const bb = d1x * d2x + d1y * d2y;
363
+ const c = d2LenSq;
364
+ const d = d1x * rx + d1y * ry;
365
+ const e = d2x * rx + d2y * ry;
366
+ const det = a * c - bb * bb;
367
+ if (det < EPS) {
368
+ let bestDsq = Infinity;
369
+ let bestP = [a1x, a1y];
370
+ let bestQ = [b1x, b1y];
371
+ const pairs = [
372
+ [[a1x, a1y], segmentClosestPointToPoint(b1x, b1y, b2x, b2y, a1x, a1y)],
373
+ [[a2x, a2y], segmentClosestPointToPoint(b1x, b1y, b2x, b2y, a2x, a2y)],
374
+ [[b1x, b1y], segmentClosestPointToPoint(a1x, a1y, a2x, a2y, b1x, b1y)],
375
+ [[b2x, b2y], segmentClosestPointToPoint(a1x, a1y, a2x, a2y, b2x, b2y)],
376
+ ];
377
+ for (const [pa, pb] of pairs) {
378
+ const dx = pb[0] - pa[0];
379
+ const dy = pb[1] - pa[1];
380
+ const dsq = dx * dx + dy * dy;
381
+ if (dsq < bestDsq) {
382
+ bestDsq = dsq;
383
+ bestP = pa;
384
+ bestQ = pb;
385
+ }
386
+ }
387
+ return [bestP, bestQ, bestDsq];
388
+ }
389
+ const s = Math.max(0.0, Math.min(1.0, (bb * e - c * d) / det));
390
+ const t = Math.max(0.0, Math.min(1.0, (a * e - bb * d) / det));
391
+ const paX = a1x + s * d1x;
392
+ const paY = a1y + s * d1y;
393
+ const pbX = b1x + t * d2x;
394
+ const pbY = b1y + t * d2y;
395
+ const dx = pbX - paX;
396
+ const dy = pbY - paY;
397
+ return [[paX, paY], [pbX, pbY], dx * dx + dy * dy];
398
+ }
399
+ export function capsuleVsCircle(capP1, capP2, capRadius, circleCenter, circleRadius) {
400
+ const [px, py] = segmentClosestPointToPoint(capP1[0], capP1[1], capP2[0], capP2[1], circleCenter[0], circleCenter[1]);
401
+ return circleVsCircle([px, py], capRadius, circleCenter, circleRadius);
402
+ }
403
+ export function capsuleVsCapsule(p1, p2, r1, q1, q2, r2) {
404
+ const [[paX, paY], [pbX, pbY]] = segmentsClosestPoints(p1[0], p1[1], p2[0], p2[1], q1[0], q1[1], q2[0], q2[1]);
405
+ return circleVsCircle([paX, paY], r1, [pbX, pbY], r2);
406
+ }
407
+ export function capsuleVsRect(capP1, capP2, capRadius, rectBounds) {
408
+ const [px, py] = segmentClosestPointToAabb(capP1[0], capP1[1], capP2[0], capP2[1], rectBounds[0], rectBounds[1], rectBounds[2], rectBounds[3]);
409
+ const result = rectVsCircle(rectBounds, [px, py], capRadius);
410
+ if (result === null)
411
+ return null;
412
+ return {
413
+ normal: [-result.normal[0], -result.normal[1]],
414
+ depth: result.depth,
415
+ };
416
+ }
417
+ function segmentClosestPointToPolygon(ax, ay, bx, by, vertices) {
418
+ const abx = bx - ax;
419
+ const aby = by - ay;
420
+ const abLenSq = abx * abx + aby * aby;
421
+ const n = vertices.length;
422
+ let bestDsq = Infinity;
423
+ let bestX = ax;
424
+ let bestY = ay;
425
+ const distToPolySq = (px, py) => {
426
+ let inside = true;
427
+ let minDsq = Infinity;
428
+ for (let i = 0; i < n; i += 1) {
429
+ const va = vertices[i];
430
+ const vb = vertices[(i + 1) % n];
431
+ if (va === undefined || vb === undefined)
432
+ continue;
433
+ const [vax, vay] = va;
434
+ const [vbx, vby] = vb;
435
+ const ex = vbx - vax;
436
+ const ey = vby - vay;
437
+ const nx = -ey;
438
+ const ny = ex;
439
+ if (nx * (px - vax) + ny * (py - vay) < 0)
440
+ inside = false;
441
+ const [cx, cy] = closestPointOnSegment(px, py, vax, vay, vbx, vby);
442
+ const dsq = (px - cx) * (px - cx) + (py - cy) * (py - cy);
443
+ if (dsq < minDsq)
444
+ minDsq = dsq;
445
+ }
446
+ return inside ? 0.0 : minDsq;
447
+ };
448
+ const attempt = (px, py) => {
449
+ const dsq = distToPolySq(px, py);
450
+ if (dsq < bestDsq) {
451
+ bestDsq = dsq;
452
+ bestX = px;
453
+ bestY = py;
454
+ }
455
+ };
456
+ attempt(ax, ay);
457
+ attempt(bx, by);
458
+ if (abLenSq > EPS) {
459
+ for (const v of vertices) {
460
+ const tProj = ((v[0] - ax) * abx + (v[1] - ay) * aby) / abLenSq;
461
+ const tClamped = Math.max(0.0, Math.min(1.0, tProj));
462
+ attempt(ax + tClamped * abx, ay + tClamped * aby);
463
+ }
464
+ }
465
+ for (let i = 0; i < n; i += 1) {
466
+ const va = vertices[i];
467
+ const vb = vertices[(i + 1) % n];
468
+ if (va === undefined || vb === undefined)
469
+ continue;
470
+ const [[paX, paY]] = segmentsClosestPoints(ax, ay, bx, by, va[0], va[1], vb[0], vb[1]);
471
+ attempt(paX, paY);
472
+ }
473
+ return [bestX, bestY, bestDsq];
474
+ }
475
+ export function capsuleVsPolygon(capP1, capP2, capRadius, polyVertices) {
476
+ const [px, py] = segmentClosestPointToPolygon(capP1[0], capP1[1], capP2[0], capP2[1], polyVertices);
477
+ const result = polygonVsCircle(polyVertices, [px, py], capRadius);
478
+ if (result === null)
479
+ return null;
480
+ return {
481
+ normal: [-result.normal[0], -result.normal[1]],
482
+ depth: result.depth,
483
+ };
484
+ }
485
+ //# sourceMappingURL=geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../../src/core/utils/geometry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./geometry.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./geometry.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,13 @@
1
+ export type Vec2 = readonly [x: number, y: number];
2
+ export type MutableVec2 = [x: number, y: number];
3
+ export interface Rect {
4
+ readonly x: number;
5
+ readonly y: number;
6
+ readonly w: number;
7
+ readonly h: number;
8
+ }
9
+ export declare function tileKey(x: number, y: number): string;
10
+ export declare function parseTileKey(key: string): Vec2 | null;
11
+ export declare function pointInRect(r: Rect, px: number, py: number): boolean;
12
+ export declare function rectsOverlap(a: Rect, b: Rect): boolean;
13
+ //# sourceMappingURL=vec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vec.d.ts","sourceRoot":"","sources":["../../src/core/vec.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAOrD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAItD"}
@@ -0,0 +1,20 @@
1
+ export function tileKey(x, y) {
2
+ return `${x};${y}`;
3
+ }
4
+ export function parseTileKey(key) {
5
+ const sep = key.indexOf(";");
6
+ if (sep < 0)
7
+ return null;
8
+ const x = Number(key.slice(0, sep));
9
+ const y = Number(key.slice(sep + 1));
10
+ if (!Number.isInteger(x) || !Number.isInteger(y))
11
+ return null;
12
+ return [x, y];
13
+ }
14
+ export function pointInRect(r, px, py) {
15
+ return px >= r.x && px <= r.x + r.w && py >= r.y && py <= r.y + r.h;
16
+ }
17
+ export function rectsOverlap(a, b) {
18
+ return (a.x <= b.x + b.w && a.x + a.w >= b.x && a.y <= b.y + b.h && a.y + a.h >= b.y);
19
+ }
20
+ //# sourceMappingURL=vec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vec.js","sourceRoot":"","sources":["../../src/core/vec.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAO,EAAE,EAAU,EAAE,EAAU;IACzD,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAO,EAAE,CAAO;IAC3C,OAAO,CACL,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type Phaser from "phaser";
2
+ import type { AnimationLibrary } from "../core/index.js";
3
+ export interface AnimBuildResult {
4
+ readonly created: string[];
5
+ readonly skipped: string[];
6
+ }
7
+ export declare function buildAnimations(anims: Phaser.Animations.AnimationManager, library: AnimationLibrary, textureKey: string, prefix?: string): AnimBuildResult;
8
+ //# sourceMappingURL=anim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anim.d.ts","sourceRoot":"","sources":["../../src/phaser/anim.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,gBAAgB,EACzC,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,SAAK,GACV,eAAe,CAsBjB"}
@@ -0,0 +1,24 @@
1
+ export function buildAnimations(anims, library, textureKey, prefix = "") {
2
+ const created = [];
3
+ const skipped = [];
4
+ for (const clip of library.animations.values()) {
5
+ const key = `${prefix}${clip.name}`;
6
+ if (clip.frames.length === 0 || anims.exists(key)) {
7
+ skipped.push(key);
8
+ continue;
9
+ }
10
+ anims.create({
11
+ key,
12
+ frames: clip.frames.map((f) => ({
13
+ key: textureKey,
14
+ frame: f.variantId,
15
+ duration: f.durationMs,
16
+ })),
17
+ frameRate: clip.fps,
18
+ repeat: clip.loop ? -1 : 0,
19
+ });
20
+ created.push(key);
21
+ }
22
+ return { created, skipped };
23
+ }
24
+ //# sourceMappingURL=anim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anim.js","sourceRoot":"","sources":["../../src/phaser/anim.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,eAAe,CAC7B,KAAyC,EACzC,OAAyB,EACzB,UAAkB,EAClB,MAAM,GAAG,EAAE;IAEX,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,KAAK,CAAC,MAAM,CAAC;YACX,GAAG;YACH,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,GAAG,EAAE,UAAU;gBACf,KAAK,EAAE,CAAC,CAAC,SAAS;gBAClB,QAAQ,EAAE,CAAC,CAAC,UAAU;aACvB,CAAC,CAAC;YACH,SAAS,EAAE,IAAI,CAAC,GAAG;YACnB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { Vec2 } from "../core/index.js";
2
+ export interface CameraLike {
3
+ setBounds(x: number, y: number, width: number, height: number): unknown;
4
+ setDeadzone(width: number, height: number): unknown;
5
+ startFollow(target: object, roundPixels?: boolean, lerpX?: number, lerpY?: number): unknown;
6
+ }
7
+ export interface FollowTarget {
8
+ readonly x: number;
9
+ readonly y: number;
10
+ }
11
+ export interface CameraOptions {
12
+ readonly bounds?: {
13
+ readonly x: number;
14
+ readonly y: number;
15
+ readonly w: number;
16
+ readonly h: number;
17
+ };
18
+ readonly deadzone?: Vec2;
19
+ readonly lerp?: number;
20
+ readonly roundPixels?: boolean;
21
+ }
22
+ export declare function worldBounds(mapTilesW: number, mapTilesH: number, tileW: number, tileH: number, renderScale: number): {
23
+ x: number;
24
+ y: number;
25
+ w: number;
26
+ h: number;
27
+ };
28
+ export declare function applyCamera(camera: CameraLike, target: FollowTarget, options?: CameraOptions): void;
29
+ //# sourceMappingURL=camera.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../src/phaser/camera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACxE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACpD,WAAW,CACT,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,OAAO,EACrB,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAOhD;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,aAAkB,GAC1B,IAAI,CAcN"}