dino-ge 1.9.0 → 1.10.2

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.
package/dist/Canvas.d.ts CHANGED
@@ -1,12 +1,21 @@
1
1
  /**
2
- * Simple wrapper for creating and managing a full-screen canvas element.
2
+ * Simple wrapper for creating and managing a canvas element.
3
+ * Supports full-screen or container-relative sizing.
3
4
  */
4
5
  export default class Canvas {
5
6
  /** The underlying HTMLCanvasElement. */
6
7
  canvas: HTMLCanvasElement;
7
- constructor();
8
+ /** Optional callback fired when the canvas resizes. */
9
+ onResize?: () => void;
10
+ private _resizeObserver?;
11
+ constructor(parentElement?: HTMLElement);
8
12
  /**
9
- * Resizes the canvas to match the window dimensions.
13
+ * Resizes the canvas to match its container or window dimensions.
14
+ * @param parent Optional parent element to match size with.
10
15
  */
11
- resize(): void;
16
+ resize(parent?: HTMLElement): void;
17
+ /**
18
+ * Cleans up resources.
19
+ */
20
+ destroy(): void;
12
21
  }
package/dist/Canvas.js CHANGED
@@ -1,21 +1,54 @@
1
1
  /**
2
- * Simple wrapper for creating and managing a full-screen canvas element.
2
+ * Simple wrapper for creating and managing a canvas element.
3
+ * Supports full-screen or container-relative sizing.
3
4
  */
4
5
  export default class Canvas {
5
- constructor() {
6
+ constructor(parentElement) {
6
7
  this.canvas = document.createElement('canvas');
7
8
  this.canvas.id = 'canvas';
8
- this.canvas.width = window.innerWidth;
9
- this.canvas.height = window.innerHeight;
10
- this.canvas.style.zIndex = '0';
11
- this.canvas.style.position = 'fixed';
9
+ if (parentElement) {
10
+ parentElement.appendChild(this.canvas);
11
+ this.canvas.style.width = '100%';
12
+ this.canvas.style.height = '100%';
13
+ // Use ResizeObserver to handle panel resizing in playground
14
+ this._resizeObserver = new ResizeObserver(() => this.resize(parentElement));
15
+ this._resizeObserver.observe(parentElement);
16
+ this.resize(parentElement);
17
+ }
18
+ else {
19
+ this.canvas.style.zIndex = '0';
20
+ this.canvas.style.position = 'fixed';
21
+ this.canvas.style.left = '0';
22
+ this.canvas.style.top = '0';
23
+ document.body.appendChild(this.canvas);
24
+ this.resize();
25
+ }
12
26
  }
13
27
  /**
14
- * Resizes the canvas to match the window dimensions.
28
+ * Resizes the canvas to match its container or window dimensions.
29
+ * @param parent Optional parent element to match size with.
15
30
  */
16
- resize() {
17
- this.canvas.width = window.innerWidth;
18
- this.canvas.height = window.innerHeight;
31
+ resize(parent) {
32
+ if (parent) {
33
+ this.canvas.width = parent.clientWidth;
34
+ this.canvas.height = parent.clientHeight;
35
+ }
36
+ else {
37
+ this.canvas.width = window.innerWidth;
38
+ this.canvas.height = window.innerHeight;
39
+ }
40
+ if (this.onResize) {
41
+ this.onResize();
42
+ }
43
+ }
44
+ /**
45
+ * Cleans up resources.
46
+ */
47
+ destroy() {
48
+ if (this._resizeObserver) {
49
+ this._resizeObserver.disconnect();
50
+ }
51
+ this.canvas.remove();
19
52
  }
20
53
  }
21
54
  //# sourceMappingURL=Canvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Canvas.js","sourceRoot":"","sources":["../src/Canvas.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IAIzB;QACE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;IAC1C,CAAC;CACF"}
1
+ {"version":3,"file":"Canvas.js","sourceRoot":"","sources":["../src/Canvas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IAQzB,YAAY,aAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC;QAE1B,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAElC,4DAA4D;YAC5D,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAoB;QACzB,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QAC1C,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF"}
package/dist/Engine.d.ts CHANGED
@@ -8,6 +8,8 @@ import type { CollisionManifold } from './Physics.js';
8
8
  * Options for initializing the Engine.
9
9
  */
10
10
  export interface EngineOpts {
11
+ /** The ID of the HTML element to inject the canvas into. */
12
+ containerId?: string;
11
13
  /** Width of the game window (e.g., '800px' or '100%'). */
12
14
  width: string;
13
15
  /** Height of the game window (e.g., '600px' or '100%'). */
@@ -58,6 +60,8 @@ export interface EngineState {
58
60
  }[];
59
61
  showPhysicsVectors: boolean;
60
62
  showCollisionLines: boolean;
63
+ zOrderDirty: boolean;
64
+ sortedObjects: GameObject[];
61
65
  }
62
66
  /**
63
67
  * The core singleton class that manages the game loop, rendering, and scene state.
@@ -65,6 +69,11 @@ export interface EngineState {
65
69
  export default class Engine {
66
70
  /** Internal helper to access the global shared state. */
67
71
  private static get _state();
72
+ /**
73
+ * Resets the engine state to its initial values.
74
+ * Useful for testing to prevent state bleed between test cases.
75
+ */
76
+ static resetState(): void;
68
77
  /**
69
78
  * Global set of game objects if no scene is active.
70
79
  */
@@ -85,6 +94,10 @@ export default class Engine {
85
94
  manifold: CollisionManifold;
86
95
  timestamp: number;
87
96
  }[];
97
+ static set debugCollisions(val: {
98
+ manifold: CollisionManifold;
99
+ timestamp: number;
100
+ }[]);
88
101
  /**
89
102
  * Whether to show velocity/acceleration vectors in debug mode.
90
103
  */
@@ -132,6 +145,16 @@ export default class Engine {
132
145
  */
133
146
  static get selectedObject(): GameObject | null;
134
147
  static set selectedObject(val: GameObject | null);
148
+ /**
149
+ * Whether the global object list needs to be re-sorted by z-index.
150
+ */
151
+ static get zOrderDirty(): boolean;
152
+ static set zOrderDirty(val: boolean);
153
+ /**
154
+ * The cached list of globally registered game objects, sorted by z-index.
155
+ */
156
+ static get sortedObjects(): GameObject[];
157
+ static set sortedObjects(val: GameObject[]);
135
158
  /**
136
159
  * The global camera instance.
137
160
  */
package/dist/Engine.js CHANGED
@@ -25,7 +25,7 @@ export class ObjectSet extends Set {
25
25
  /**
26
26
  * Shared state for the engine to ensure singletons work across different module loads.
27
27
  */
28
- const INITIAL_STATE = {
28
+ const createInitialState = () => ({
29
29
  objects: new ObjectSet(),
30
30
  paused: false,
31
31
  debug: false,
@@ -36,8 +36,10 @@ const INITIAL_STATE = {
36
36
  currentScene: null,
37
37
  debugCollisions: [],
38
38
  showPhysicsVectors: false,
39
- showCollisionLines: false
40
- };
39
+ showCollisionLines: false,
40
+ zOrderDirty: true,
41
+ sortedObjects: []
42
+ });
41
43
  /**
42
44
  * The core singleton class that manages the game loop, rendering, and scene state.
43
45
  */
@@ -46,10 +48,17 @@ export default class Engine {
46
48
  static get _state() {
47
49
  const global = globalThis;
48
50
  if (!global.__DINO_ENGINE_STATE__) {
49
- global.__DINO_ENGINE_STATE__ = INITIAL_STATE;
51
+ global.__DINO_ENGINE_STATE__ = createInitialState();
50
52
  }
51
53
  return global.__DINO_ENGINE_STATE__;
52
54
  }
55
+ /**
56
+ * Resets the engine state to its initial values.
57
+ * Useful for testing to prevent state bleed between test cases.
58
+ */
59
+ static resetState() {
60
+ globalThis.__DINO_ENGINE_STATE__ = createInitialState();
61
+ }
53
62
  /**
54
63
  * Global set of game objects if no scene is active.
55
64
  */
@@ -69,6 +78,9 @@ export default class Engine {
69
78
  static get debugCollisions() {
70
79
  return this._state.debugCollisions;
71
80
  }
81
+ static set debugCollisions(val) {
82
+ this._state.debugCollisions = val;
83
+ }
72
84
  /**
73
85
  * Whether to show velocity/acceleration vectors in debug mode.
74
86
  */
@@ -132,6 +144,16 @@ export default class Engine {
132
144
  */
133
145
  static get selectedObject() { return this._state.selectedObject; }
134
146
  static set selectedObject(val) { this._state.selectedObject = val; }
147
+ /**
148
+ * Whether the global object list needs to be re-sorted by z-index.
149
+ */
150
+ static get zOrderDirty() { return this._state.zOrderDirty; }
151
+ static set zOrderDirty(val) { this._state.zOrderDirty = val; }
152
+ /**
153
+ * The cached list of globally registered game objects, sorted by z-index.
154
+ */
155
+ static get sortedObjects() { return this._state.sortedObjects; }
156
+ static set sortedObjects(val) { this._state.sortedObjects = val; }
135
157
  /**
136
158
  * The global camera instance.
137
159
  */
@@ -147,6 +169,7 @@ export default class Engine {
147
169
  */
148
170
  static set currentScene(scene) {
149
171
  this._state.currentScene = scene;
172
+ this.zOrderDirty = true;
150
173
  if (scene) {
151
174
  this.camera.reset();
152
175
  scene.onLoad();
@@ -191,7 +214,8 @@ export default class Engine {
191
214
  update: callbacks.update,
192
215
  fixedUpdate: callbacks.fixedUpdate,
193
216
  };
194
- this._canvas = new Canvas();
217
+ const container = defaultedOpts.containerId ? document.getElementById(defaultedOpts.containerId) : null;
218
+ this._canvas = new Canvas(container || undefined);
195
219
  this._ctx = this._canvas.canvas.getContext('2d');
196
220
  this.width = this._canvas.canvas.width;
197
221
  this.height = this._canvas.canvas.height;
@@ -201,21 +225,26 @@ export default class Engine {
201
225
  else {
202
226
  Engine.renderingSystem = new RenderingSystem(this._ctx);
203
227
  }
204
- this._window = document.createElement('div');
205
- this._window.id = 'canvas-container';
206
- this._window.style.width = defaultedOpts.width;
207
- this._window.style.height = defaultedOpts.height;
228
+ if (!container) {
229
+ this._window = document.createElement('div');
230
+ this._window.id = 'canvas-container';
231
+ this._window.style.width = defaultedOpts.width;
232
+ this._window.style.height = defaultedOpts.height;
233
+ const bodies = document.getElementsByTagName('body');
234
+ if (bodies.length > 0) {
235
+ bodies[0].appendChild(this._window);
236
+ }
237
+ this._window.appendChild(this._canvas.canvas);
238
+ }
239
+ else {
240
+ this._window = container;
241
+ }
208
242
  Input.init();
209
243
  window.addEventListener('resize', () => {
210
- this._canvas.resize();
244
+ this._canvas.resize(container || undefined);
211
245
  this.width = this._canvas.canvas.width;
212
246
  this.height = this._canvas.canvas.height;
213
247
  });
214
- const bodies = document.getElementsByTagName('body');
215
- if (bodies.length > 0) {
216
- bodies[0].appendChild(this._window);
217
- }
218
- this._window.appendChild(this._canvas.canvas);
219
248
  setTimeout(() => { var _a, _b; return (_b = (_a = this.callbacks).onLoad) === null || _b === void 0 ? void 0 : _b.call(_a); }, 0);
220
249
  }
221
250
  _onLoad() {
@@ -380,6 +409,7 @@ export default class Engine {
380
409
  * @param object The object to register.
381
410
  */
382
411
  static registerObject(object) {
412
+ this.zOrderDirty = true;
383
413
  if (Engine.currentScene) {
384
414
  Engine.currentScene.add(object);
385
415
  }
@@ -392,6 +422,7 @@ export default class Engine {
392
422
  * @param object The object to destroy.
393
423
  */
394
424
  static destroyObject(object) {
425
+ this.zOrderDirty = true;
395
426
  if (this.selectedObject === object) {
396
427
  this.selectedObject = null;
397
428
  }
@@ -404,6 +435,7 @@ export default class Engine {
404
435
  }
405
436
  /** Destroy all objects in the active scene or global engine. */
406
437
  static destroyAll() {
438
+ this.zOrderDirty = true;
407
439
  if (Engine.currentScene) {
408
440
  Engine.currentScene.clear();
409
441
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AA6BrD;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,GAAe;IAO5C;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;IAC1B,CAAC;CACF;AAoBD;;GAEG;AACH,MAAM,aAAa,GAAgB;IACjC,OAAO,EAAE,IAAI,SAAS,EAAE;IACxB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,cAAc,EAAE,IAAI;IACpB,MAAM,EAAE,IAAI,MAAM,EAAE;IACpB,OAAO,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC;IAC9B,MAAM,EAAE,IAAI,WAAW,EAAE;IACzB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,EAAE;IACnB,kBAAkB,EAAE,KAAK;IACzB,kBAAkB,EAAE,KAAK;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,yDAAyD;IACjD,MAAM,KAAK,MAAM;QACvB,MAAM,MAAM,GAAG,UAA+D,CAAC;QAC/E,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAClC,MAAM,CAAC,qBAAqB,GAAG,aAAa,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,OAAO,KAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAEtE;;OAEG;IACK,MAAM,KAAK,QAAQ,KAAe,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAEvE;;OAEG;IACI,MAAM,KAAK,eAAe,KAAkC,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IACjG,MAAM,KAAK,eAAe,CAAC,GAAgC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC;IAE1G;;OAEG;IACI,MAAM,KAAK,eAAe;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,kBAAkB,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnF,MAAM,KAAK,kBAAkB,CAAC,GAAY,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC;IAE5F;;OAEG;IACI,MAAM,KAAK,kBAAkB,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnF,MAAM,KAAK,kBAAkB,CAAC,GAAY,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC;IAE5F;;OAEG;IACI,MAAM,KAAK,MAAM,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,MAAM,KAAK,MAAM,CAAC,GAAY;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,KAAK,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,KAAK,CAAC,GAAY;QAClC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,KAAK,MAAM,KAAkB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvE;;;;OAIG;IACI,MAAM,CAAC,EAAE,CAAC,IAAY,EAAE,QAAsC;QACnE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAA8B,CAAC,CAAC;IACrE,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,QAAsC;QACpE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAA8B,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,IAAI,CAAC,IAAY,EAAE,MAAgB;QAC/C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,cAAc,KAAwB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;IACrF,MAAM,KAAK,cAAc,CAAC,GAAsB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC;IAE9F;;OAEG;IACI,MAAM,KAAK,MAAM,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjE;;OAEG;IACI,MAAM,KAAK,YAAY;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,YAAY,CAAC,KAAmB;QAChD,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACpB,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAiBD,+CAA+C;IAC/C,IAAI,MAAM;QACR,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,+CAA+C;IAC/C,IAAI,MAAM;QACR,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAYD,YAAY,SAA0B,EAAE,OAA4B,EAAE;QAVtE,mDAAmD;QACnD,QAAG,GAAW,CAAC,CAAC;QAChB,0CAA0C;QAC1C,cAAS,GAAW,CAAC,CAAC;QACd,kBAAa,GAAW,CAAC,CAAC;QAC1B,mBAAc,GAAW,CAAC,CAAC;QAC3B,iBAAY,GAAW,CAAC,CAAC;QACzB,gBAAW,GAAW,CAAC,GAAG,EAAE,CAAC;QAC7B,eAAU,GAAa,EAAE,CAAC;QAGhC,MAAM,aAAa,mBACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAAE,OAAO,IACtB,IAAI,CACR,CAAC;QAGF,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;QAEvD,IAAI,CAAC,SAAS,GAAG;YACf,MAAM,EAAE,GAAG,EAAE;;gBACX,MAAA,SAAS,CAAC,MAAM,yDAAI,CAAC;gBACrB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;YACD,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,WAAW,EAAE,SAAS,CAAC,WAAW;SACnC,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAE,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAEzC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,kBAAkB,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QAEjD,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9C,UAAU,CAAC,GAAG,EAAE,eAAC,OAAA,MAAA,MAAA,IAAI,CAAC,SAAS,EAAC,MAAM,kDAAI,CAAA,EAAA,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAEO,OAAO,CAAC,SAAiB;QAC/B,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC;YAAE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAE7D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;YAC9D,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YAE/B,wCAAwC;YACxC,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;gBAC5B,yBAAyB;gBACzB,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;gBAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE;oBAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACzD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC3F,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,oBAAoB;YACpB,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC;YACzC,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC;YACxC,CAAC;YAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC/B,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,yEAAyE;YACzE,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QAED,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAEO,YAAY;QAClB,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEnF,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACjC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEnF,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,OAAwB;;QACzC,iCAAiC;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,yBAAyB;QAEnE,MAAM,YAAY,GAAG,GAAG,CAAC;QACzB,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,GAAG,OAAO,CAAC;QAC7D,IAAI,CAAC,GAAG,OAAO,CAAC;QAEhB,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAE1E,uCAAuC;QACvC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,CAAC,IAAI,WAAW,GAAG,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC;YAClC,MAAM,UAAU,GAAgC;gBAC9C,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3F,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAA,MAAA,GAAG,CAAC,MAAM,0CAAE,KAAK,mCAAI,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAA,MAAA,GAAG,CAAC,MAAM,0CAAE,MAAM,mCAAI,CAAC,CAAC,EAAE,CAAC;aACzF,CAAC;YAEF,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC7B,IAAI,OAAO,EAAE,CAAC;gBACZ,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YACpD,IAAI,QAAQ,EAAE,CAAC;gBACb,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7G,CAAC;YAED,MAAM,eAAe,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;YAE1D,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAE/C,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YAC9B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED;;;;OAIG;IACG,UAAU,CAAC,SAAqB,EAAE,IAAY;;YAClD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC5B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,SAAS,EAAE,CAAC;QACd,CAAC;KAAA;IAED;;;;;OAKG;IACH,SAAS,CAAC,YAAoB,EAAE,EAAc,EAAE,OAAmB;QACjE,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBACnB,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IAAI,MAAM,CAAC,KAAa;QACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,MAAM;YAAE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,MAAkB;QACtC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,MAAkB;QACrC,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,UAAU;QACf,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"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"}
package/dist/Loader.js CHANGED
@@ -12,7 +12,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
12
12
  */
13
13
  const INITIAL_STATE = {
14
14
  assets: new Map(),
15
- loadingQueue: new Set(),
15
+ loadingQueue: new Map(),
16
16
  totalToLoad: 0,
17
17
  loadedCount: 0
18
18
  };
@@ -40,13 +40,9 @@ export default class ResourceLoader {
40
40
  * @param src Path to the image file.
41
41
  */
42
42
  static queueImage(tag, src) {
43
- if (this.assets.has(tag))
43
+ if (this.assets.has(tag) || this.loadingQueue.has(tag))
44
44
  return;
45
- // Check if tag already exists in queue
46
- const isAlreadyQueued = Array.from(this.loadingQueue).some(item => JSON.parse(item).tag === tag);
47
- if (isAlreadyQueued)
48
- return;
49
- this.loadingQueue.add(JSON.stringify({ tag, src }));
45
+ this.loadingQueue.set(tag, src);
50
46
  this.totalToLoad++;
51
47
  }
52
48
  /**
@@ -57,8 +53,7 @@ export default class ResourceLoader {
57
53
  return __awaiter(this, void 0, void 0, function* () {
58
54
  if (this.loadingQueue.size === 0)
59
55
  return Promise.resolve();
60
- const promises = Array.from(this.loadingQueue).map(item => {
61
- const { tag, src } = JSON.parse(item);
56
+ const promises = Array.from(this.loadingQueue.entries()).map(([tag, src]) => {
62
57
  return new Promise((resolve, reject) => {
63
58
  const img = new Image();
64
59
  img.src = src;
@@ -1 +1 @@
1
- {"version":3,"file":"Loader.js","sourceRoot":"","sources":["../src/Loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Loader.js","sourceRoot":"","sources":["../src/Loader.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,11 @@ export default class RenderingSystem extends System {
32
32
  // Apply camera transform
33
33
  this.ctx.scale(Engine.camera.zoom, Engine.camera.zoom);
34
34
  this.ctx.translate(-Engine.camera.position.x, -Engine.camera.position.y);
35
+ // Update sorted cache if dirty
36
+ if (Engine.zOrderDirty || !Engine.sortedObjects) {
37
+ Engine.sortedObjects = Array.from(entities).sort((a, b) => (a.metadata.zIndex > b.metadata.zIndex ? 1 : -1));
38
+ Engine.zOrderDirty = false;
39
+ }
35
40
  // Draw Debug Collisions (Briefly)
36
41
  if (debug && Engine.showCollisionLines) {
37
42
  const now = Date.now();
@@ -64,9 +69,7 @@ export default class RenderingSystem extends System {
64
69
  this.ctx.restore();
65
70
  });
66
71
  }
67
- // Sort entities by zIndex for correct draw order
68
- const sorted = Array.from(entities).sort((a, b) => (a.metadata.zIndex > b.metadata.zIndex ? 1 : -1));
69
- sorted.forEach((object) => {
72
+ Engine.sortedObjects.forEach((object) => {
70
73
  var _a, _b, _c, _d;
71
74
  const { worldPosition, worldScale } = object.transform;
72
75
  const width = ((_b = (_a = object.bounds) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 0) * worldScale.x;
@@ -1 +1 @@
1
- {"version":3,"file":"RenderingSystem.js","sourceRoot":"","sources":["../src/RenderingSystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderingSystem.js","sourceRoot":"","sources":["../src/RenderingSystem.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,9 @@ import Component from './Component.js';
5
5
  export default class TagComponent extends Component {
6
6
  /** A unique identifier for the object type. */
7
7
  tag: string;
8
+ private _zIndex;
8
9
  /** Rendering order (lower is background, higher is foreground). */
9
- zIndex: number;
10
+ get zIndex(): number;
11
+ set zIndex(val: number);
10
12
  constructor(tag?: string, zIndex?: number);
11
13
  }
@@ -1,12 +1,21 @@
1
1
  import Component from './Component.js';
2
+ import Engine from './Engine.js';
2
3
  /**
3
4
  * Component that holds metadata like tags and rendering order.
4
5
  */
5
6
  export default class TagComponent extends Component {
7
+ /** Rendering order (lower is background, higher is foreground). */
8
+ get zIndex() { return this._zIndex; }
9
+ set zIndex(val) {
10
+ if (this._zIndex !== val) {
11
+ this._zIndex = val;
12
+ Engine.zOrderDirty = true;
13
+ }
14
+ }
6
15
  constructor(tag = 'obj', zIndex = 0) {
7
16
  super();
8
17
  this.tag = tag;
9
- this.zIndex = zIndex;
18
+ this._zIndex = zIndex;
10
19
  }
11
20
  }
12
21
  //# sourceMappingURL=TagComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TagComponent.js","sourceRoot":"","sources":["../src/TagComponent.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,SAAS;IAMjD,YAAY,MAAc,KAAK,EAAE,SAAiB,CAAC;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"TagComponent.js","sourceRoot":"","sources":["../src/TagComponent.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,SAAS;IAKjD,mEAAmE;IACnE,IAAI,MAAM,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,GAAW;QACpB,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;YACnB,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,YAAY,MAAc,KAAK,EAAE,SAAiB,CAAC;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;CACF"}
@@ -5,16 +5,37 @@ import Vector2 from './Vector2.js';
5
5
  * Supports hierarchical transformations (parent-child relationships).
6
6
  */
7
7
  export default class TransformComponent extends Component {
8
+ private _position;
9
+ private _rotation;
10
+ private _scale;
8
11
  /** Local position relative to the parent. */
9
- position: Vector2;
12
+ get position(): Vector2;
13
+ set position(val: Vector2);
10
14
  /** Local rotation in radians relative to the parent. */
11
- rotation: number;
15
+ get rotation(): number;
16
+ set rotation(val: number);
12
17
  /** Local scale relative to the parent. */
13
- scale: Vector2;
18
+ get scale(): Vector2;
19
+ set scale(val: Vector2);
14
20
  /** Reference to the parent transform. */
15
21
  parent?: TransformComponent;
16
22
  /** List of children transforms. */
17
23
  children: Set<TransformComponent>;
24
+ private _isDirty;
25
+ private _worldPosition;
26
+ private _worldRotation;
27
+ private _worldScale;
28
+ constructor();
29
+ /**
30
+ * Internal callback for when local vectors are modified.
31
+ * @private
32
+ */
33
+ private onLocalTransformChange;
34
+ /**
35
+ * Sets this transform and all its children as dirty, forcing a recalculation
36
+ * of world-space properties on the next access.
37
+ */
38
+ setDirty(): void;
18
39
  /**
19
40
  * Adds a child transform to this one.
20
41
  * @param child The child transform to add.
@@ -37,4 +58,9 @@ export default class TransformComponent extends Component {
37
58
  * Calculates the world-space scale.
38
59
  */
39
60
  get worldScale(): Vector2;
61
+ /**
62
+ * Recalculates all world-space properties from the root parent down.
63
+ * @private
64
+ */
65
+ private updateWorldTransform;
40
66
  }
@@ -5,16 +5,58 @@ import Vector2 from './Vector2.js';
5
5
  * Supports hierarchical transformations (parent-child relationships).
6
6
  */
7
7
  export default class TransformComponent extends Component {
8
+ /** Local position relative to the parent. */
9
+ get position() { return this._position; }
10
+ set position(val) {
11
+ this._position = val;
12
+ this._position.onChange = this.onLocalTransformChange.bind(this);
13
+ this.setDirty();
14
+ }
15
+ /** Local rotation in radians relative to the parent. */
16
+ get rotation() { return this._rotation; }
17
+ set rotation(val) {
18
+ this._rotation = val;
19
+ this.setDirty();
20
+ }
21
+ /** Local scale relative to the parent. */
22
+ get scale() { return this._scale; }
23
+ set scale(val) {
24
+ this._scale = val;
25
+ this._scale.onChange = this.onLocalTransformChange.bind(this);
26
+ this.setDirty();
27
+ }
8
28
  constructor() {
9
- super(...arguments);
10
- /** Local position relative to the parent. */
11
- this.position = new Vector2(0, 0);
12
- /** Local rotation in radians relative to the parent. */
13
- this.rotation = 0;
14
- /** Local scale relative to the parent. */
15
- this.scale = new Vector2(1, 1);
29
+ super();
30
+ this._position = new Vector2(0, 0);
31
+ this._rotation = 0;
32
+ this._scale = new Vector2(1, 1);
16
33
  /** List of children transforms. */
17
34
  this.children = new Set();
35
+ // Cache for world-space properties
36
+ this._isDirty = true;
37
+ this._worldPosition = new Vector2(0, 0);
38
+ this._worldRotation = 0;
39
+ this._worldScale = new Vector2(1, 1);
40
+ this._position.onChange = this.onLocalTransformChange.bind(this);
41
+ this._scale.onChange = this.onLocalTransformChange.bind(this);
42
+ this.setDirty();
43
+ }
44
+ /**
45
+ * Internal callback for when local vectors are modified.
46
+ * @private
47
+ */
48
+ onLocalTransformChange() {
49
+ this.setDirty();
50
+ }
51
+ /**
52
+ * Sets this transform and all its children as dirty, forcing a recalculation
53
+ * of world-space properties on the next access.
54
+ */
55
+ setDirty() {
56
+ if (this._isDirty)
57
+ return;
58
+ this._isDirty = true;
59
+ this.children.forEach(child => child.setDirty());
18
60
  }
19
61
  /**
20
62
  * Adds a child transform to this one.
@@ -28,6 +70,7 @@ export default class TransformComponent extends Component {
28
70
  }
29
71
  child.parent = this;
30
72
  this.children.add(child);
73
+ child.setDirty();
31
74
  }
32
75
  /**
33
76
  * Removes a child transform from this one.
@@ -37,49 +80,70 @@ export default class TransformComponent extends Component {
37
80
  if (child.parent === this) {
38
81
  child.parent = undefined;
39
82
  this.children.delete(child);
83
+ child.setDirty();
40
84
  }
41
85
  }
42
86
  /**
43
87
  * Calculates the world-space position.
44
88
  */
45
89
  get worldPosition() {
46
- if (!this.parent) {
47
- return new Vector2(this.position.x, this.position.y);
48
- }
49
- const parentWorldPos = this.parent.worldPosition;
50
- const parentWorldRot = this.parent.worldRotation;
51
- const parentWorldScale = this.parent.worldScale;
52
- // Apply parent's scale and rotation to local position
53
- let localX = this.position.x * parentWorldScale.x;
54
- let localY = this.position.y * parentWorldScale.y;
55
- if (parentWorldRot !== 0) {
56
- const cos = Math.cos(parentWorldRot);
57
- const sin = Math.sin(parentWorldRot);
58
- const rotatedX = localX * cos - localY * sin;
59
- const rotatedY = localX * sin + localY * cos;
60
- localX = rotatedX;
61
- localY = rotatedY;
90
+ if (this._isDirty) {
91
+ this.updateWorldTransform();
62
92
  }
63
- return new Vector2(parentWorldPos.x + localX, parentWorldPos.y + localY);
93
+ return this._worldPosition.clone();
64
94
  }
65
95
  /**
66
96
  * Calculates the world-space rotation.
67
97
  */
68
98
  get worldRotation() {
69
- if (!this.parent) {
70
- return this.rotation;
99
+ if (this._isDirty) {
100
+ this.updateWorldTransform();
71
101
  }
72
- return this.parent.worldRotation + this.rotation;
102
+ return this._worldRotation;
73
103
  }
74
104
  /**
75
105
  * Calculates the world-space scale.
76
106
  */
77
107
  get worldScale() {
108
+ if (this._isDirty) {
109
+ this.updateWorldTransform();
110
+ }
111
+ return this._worldScale.clone();
112
+ }
113
+ /**
114
+ * Recalculates all world-space properties from the root parent down.
115
+ * @private
116
+ */
117
+ updateWorldTransform() {
78
118
  if (!this.parent) {
79
- return new Vector2(this.scale.x, this.scale.y);
119
+ this._worldPosition.x = this.position.x;
120
+ this._worldPosition.y = this.position.y;
121
+ this._worldRotation = this.rotation;
122
+ this._worldScale.x = this.scale.x;
123
+ this._worldScale.y = this.scale.y;
124
+ }
125
+ else {
126
+ const parentWorldPos = this.parent.worldPosition;
127
+ const parentWorldRot = this.parent.worldRotation;
128
+ const parentWorldScale = this.parent.worldScale;
129
+ // Apply parent's scale and rotation to local position
130
+ let localX = this.position.x * parentWorldScale.x;
131
+ let localY = this.position.y * parentWorldScale.y;
132
+ if (parentWorldRot !== 0) {
133
+ const cos = Math.cos(parentWorldRot);
134
+ const sin = Math.sin(parentWorldRot);
135
+ const rotatedX = localX * cos - localY * sin;
136
+ const rotatedY = localX * sin + localY * cos;
137
+ localX = rotatedX;
138
+ localY = rotatedY;
139
+ }
140
+ this._worldPosition.x = parentWorldPos.x + localX;
141
+ this._worldPosition.y = parentWorldPos.y + localY;
142
+ this._worldRotation = parentWorldRot + this.rotation;
143
+ this._worldScale.x = parentWorldScale.x * this.scale.x;
144
+ this._worldScale.y = parentWorldScale.y * this.scale.y;
80
145
  }
81
- const parentScale = this.parent.worldScale;
82
- return new Vector2(parentScale.x * this.scale.x, parentScale.y * this.scale.y);
146
+ this._isDirty = false;
83
147
  }
84
148
  }
85
149
  //# sourceMappingURL=TransformComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransformComponent.js","sourceRoot":"","sources":["../src/TransformComponent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransformComponent.js","sourceRoot":"","sources":["../src/TransformComponent.ts"],"names":[],"mappings":"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"}
package/dist/Vector2.d.ts CHANGED
@@ -2,10 +2,16 @@
2
2
  * Class representing a 2D vector or point.
3
3
  */
4
4
  export default class Vector2 {
5
+ private _x;
6
+ private _y;
7
+ /** Optional callback fired when x or y is modified. */
8
+ onChange?: () => void;
5
9
  /** X coordinate. */
6
- x: number;
10
+ get x(): number;
11
+ set x(val: number);
7
12
  /** Y coordinate. */
8
- y: number;
13
+ get y(): number;
14
+ set y(val: number);
9
15
  constructor(x?: number, y?: number);
10
16
  /**
11
17
  * Calculates the Euclidean distance between two vectors.
package/dist/Vector2.js CHANGED
@@ -2,9 +2,27 @@
2
2
  * Class representing a 2D vector or point.
3
3
  */
4
4
  export default class Vector2 {
5
+ /** X coordinate. */
6
+ get x() { return this._x; }
7
+ set x(val) {
8
+ var _a;
9
+ if (this._x !== val) {
10
+ this._x = val;
11
+ (_a = this.onChange) === null || _a === void 0 ? void 0 : _a.call(this);
12
+ }
13
+ }
14
+ /** Y coordinate. */
15
+ get y() { return this._y; }
16
+ set y(val) {
17
+ var _a;
18
+ if (this._y !== val) {
19
+ this._y = val;
20
+ (_a = this.onChange) === null || _a === void 0 ? void 0 : _a.call(this);
21
+ }
22
+ }
5
23
  constructor(x = 0, y = 0) {
6
- this.x = x;
7
- this.y = y;
24
+ this._x = x;
25
+ this._y = y;
8
26
  }
9
27
  /**
10
28
  * Calculates the Euclidean distance between two vectors.
@@ -1 +1 @@
1
- {"version":3,"file":"Vector2.js","sourceRoot":"","sources":["../src/Vector2.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAM1B,YAAY,IAAY,CAAC,EAAE,IAAY,CAAC;QACtC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAW,EAAE,EAAW;QACtC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,EAAW,EAAE,EAAW;QACjC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,wCAAwC;IACxC,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,qEAAqE;IACrE,IAAI,UAAU;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,IAAI,GAAG,KAAK,CAAC;YAAE,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,uCAAuC;IACvC,GAAG,CAAC,KAAc;QAChB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8CAA8C;IAC9C,QAAQ,CAAC,KAAc;QACrB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,QAAQ,CAAC,MAAc;QACrB,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;QACjB,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qCAAqC;IACrC,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"Vector2.js","sourceRoot":"","sources":["../src/Vector2.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAO1B,oBAAoB;IACpB,IAAI,CAAC,KAAa,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,GAAW;;QACf,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACd,MAAA,IAAI,CAAC,QAAQ,oDAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,KAAa,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,GAAW;;QACf,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACd,MAAA,IAAI,CAAC,QAAQ,oDAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,YAAY,IAAY,CAAC,EAAE,IAAY,CAAC;QACtC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAW,EAAE,EAAW;QACtC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,EAAW,EAAE,EAAW;QACjC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,wCAAwC;IACxC,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,qEAAqE;IACrE,IAAI,UAAU;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,IAAI,GAAG,KAAK,CAAC;YAAE,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,uCAAuC;IACvC,GAAG,CAAC,KAAc;QAChB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8CAA8C;IAC9C,QAAQ,CAAC,KAAc;QACrB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,QAAQ,CAAC,MAAc;QACrB,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;QACjB,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qCAAqC;IACrC,KAAK;QACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dino-ge",
3
- "version": "1.9.0",
3
+ "version": "1.10.2",
4
4
  "description": "Lightweight, performant 2D game engine built with TypeScript",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",