dino-ge 1.2.2 → 1.2.6

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 (73) hide show
  1. package/dist/Circle.d.ts +0 -2
  2. package/dist/Circle.js +2 -11
  3. package/dist/Circle.js.map +1 -1
  4. package/dist/Engine.d.ts +22 -5
  5. package/dist/Engine.js +74 -63
  6. package/dist/Engine.js.map +1 -1
  7. package/dist/GameObject.d.ts +4 -9
  8. package/dist/GameObject.js +7 -0
  9. package/dist/GameObject.js.map +1 -1
  10. package/dist/Line.d.ts +0 -2
  11. package/dist/Line.js +2 -9
  12. package/dist/Line.js.map +1 -1
  13. package/dist/LineComponent.d.ts +19 -0
  14. package/dist/LineComponent.js +25 -0
  15. package/dist/LineComponent.js.map +1 -0
  16. package/dist/PhysicsSystem.d.ts +14 -0
  17. package/dist/PhysicsSystem.js +27 -0
  18. package/dist/PhysicsSystem.js.map +1 -0
  19. package/dist/Rectangle.d.ts +0 -2
  20. package/dist/Rectangle.js +2 -7
  21. package/dist/Rectangle.js.map +1 -1
  22. package/dist/RenderComponent.d.ts +13 -0
  23. package/dist/RenderComponent.js +12 -0
  24. package/dist/RenderComponent.js.map +1 -0
  25. package/dist/RenderingSystem.d.ts +22 -0
  26. package/dist/RenderingSystem.js +66 -0
  27. package/dist/RenderingSystem.js.map +1 -0
  28. package/dist/ShapeComponent.d.ts +24 -0
  29. package/dist/ShapeComponent.js +35 -0
  30. package/dist/ShapeComponent.js.map +1 -0
  31. package/dist/Sprite.d.ts +20 -17
  32. package/dist/Sprite.js +37 -80
  33. package/dist/Sprite.js.map +1 -1
  34. package/dist/SpriteComponent.d.ts +35 -0
  35. package/dist/SpriteComponent.js +90 -0
  36. package/dist/SpriteComponent.js.map +1 -0
  37. package/dist/System.d.ts +20 -0
  38. package/dist/System.js +7 -0
  39. package/dist/System.js.map +1 -0
  40. package/dist/Text.d.ts +18 -10
  41. package/dist/Text.js +37 -26
  42. package/dist/Text.js.map +1 -1
  43. package/dist/TextComponent.d.ts +29 -0
  44. package/dist/TextComponent.js +38 -0
  45. package/dist/TextComponent.js.map +1 -0
  46. package/dist/Tilemap.d.ts +0 -5
  47. package/dist/Tilemap.js +2 -18
  48. package/dist/Tilemap.js.map +1 -1
  49. package/dist/TilemapComponent.d.ts +20 -0
  50. package/dist/TilemapComponent.js +33 -0
  51. package/dist/TilemapComponent.js.map +1 -0
  52. package/dist/index.d.ts +9 -0
  53. package/dist/index.js +9 -0
  54. package/dist/index.js.map +1 -1
  55. package/package.json +1 -1
  56. package/src/Circle.ts +3 -11
  57. package/src/Engine.ts +77 -58
  58. package/src/GameObject.ts +11 -8
  59. package/src/Line.ts +3 -9
  60. package/src/LineComponent.ts +34 -0
  61. package/src/PhysicsSystem.ts +29 -0
  62. package/src/Rectangle.ts +3 -12
  63. package/src/RenderComponent.ts +15 -0
  64. package/src/RenderingSystem.ts +84 -0
  65. package/src/ShapeComponent.ts +50 -0
  66. package/src/Sprite.ts +45 -102
  67. package/src/SpriteComponent.ts +124 -0
  68. package/src/System.ts +22 -0
  69. package/src/Text.ts +53 -43
  70. package/src/TextComponent.ts +75 -0
  71. package/src/Tilemap.ts +8 -29
  72. package/src/TilemapComponent.ts +55 -0
  73. package/src/index.ts +9 -0
package/dist/Circle.d.ts CHANGED
@@ -30,6 +30,4 @@ export default class Circle extends GameObject {
30
30
  /** Center point of the circle. */
31
31
  get center(): Vector2;
32
32
  constructor(props: CircleProps);
33
- /** Draws the circle onto the provided rendering context. */
34
- draw(ctx: CanvasRenderingContext2D): void;
35
33
  }
package/dist/Circle.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import Vector2 from './Vector2.js';
2
2
  import GameObject from './GameObject.js';
3
+ import ShapeComponent from './ShapeComponent.js';
3
4
  const defaultProps = {
4
5
  tag: 'circle',
5
6
  colour: 'black',
@@ -31,18 +32,8 @@ export default class Circle extends GameObject {
31
32
  this.radius = defaultedProps.radius;
32
33
  this.colour = defaultedProps.colour;
33
34
  this.zIndex = defaultedProps.zIndex;
35
+ this.addComponent(new ShapeComponent('circle', this.colour, this.radius));
34
36
  this.registerSelf();
35
37
  }
36
- /** Draws the circle onto the provided rendering context. */
37
- draw(ctx) {
38
- if (!this.visible)
39
- return;
40
- ctx.beginPath();
41
- ctx.fillStyle = this.colour;
42
- const center = this.center;
43
- ctx.arc(center.x, center.y, this.radius, 0, Math.PI * 2);
44
- ctx.fill();
45
- ctx.closePath();
46
- }
47
38
  }
48
39
  //# sourceMappingURL=Circle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Circle.js","sourceRoot":"","sources":["../src/Circle.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAkBzC,MAAM,YAAY,GAAG;IACnB,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,UAAU;IAM5C,wCAAwC;IACxC,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,yCAAyC;IACzC,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAExC,kCAAkC;IAClC,IAAI,MAAM;QACR,OAAO,IAAI,OAAO,CAChB,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAC7B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAC9B,CAAC;IACJ,CAAC;IAED,YAAY,KAAkB;QAC5B,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1E,MAAM,cAAc,mCACf,YAAY,GACZ,KAAK,CACT,CAAC;QAEF,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,YAAY,OAAO,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QAEpC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,GAA6B;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"Circle.js","sourceRoot":"","sources":["../src/Circle.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAkBjD,MAAM,YAAY,GAAG;IACnB,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,UAAU;IAM5C,wCAAwC;IACxC,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,yCAAyC;IACzC,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAExC,kCAAkC;IAClC,IAAI,MAAM;QACR,OAAO,IAAI,OAAO,CAChB,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAC7B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAC9B,CAAC;IACJ,CAAC;IAED,YAAY,KAAkB;QAC5B,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1E,MAAM,cAAc,mCACf,YAAY,GACZ,KAAK,CACT,CAAC;QAEF,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,YAAY,OAAO,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QAEpC,IAAI,CAAC,YAAY,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAE1E,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;CACF"}
package/dist/Engine.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import GameObject from './GameObject.js';
2
2
  import Scene from './Scene.js';
3
3
  import Camera from './Camera.js';
4
+ import RenderingSystem from './RenderingSystem.js';
4
5
  /**
5
6
  * Options for initializing the Engine.
6
7
  */
@@ -43,23 +44,39 @@ export default class Engine {
43
44
  /**
44
45
  * Global set of game objects if no scene is active.
45
46
  */
46
- static objects: ObjectSet;
47
+ static get objects(): ObjectSet;
48
+ /**
49
+ * Global list of systems that process game objects.
50
+ */
51
+ private static get _systems();
52
+ /**
53
+ * The global rendering system.
54
+ */
55
+ static get renderingSystem(): RenderingSystem | undefined;
56
+ static set renderingSystem(val: RenderingSystem | undefined);
47
57
  /**
48
58
  * Whether the game loop is currently paused.
49
59
  */
50
- static paused: boolean;
60
+ static get paused(): boolean;
61
+ static set paused(val: boolean);
51
62
  /**
52
63
  * Toggle for visual debug mode (hitboxes and stats).
53
64
  */
54
- static debug: boolean;
65
+ static get debug(): boolean;
66
+ static set debug(val: boolean);
67
+ /**
68
+ * Global event bus for engine events.
69
+ */
70
+ static get events(): EventTarget;
55
71
  /**
56
72
  * The currently selected object in debug mode.
57
73
  */
58
- static selectedObject: GameObject | null;
74
+ static get selectedObject(): GameObject | null;
75
+ static set selectedObject(val: GameObject | null);
59
76
  /**
60
77
  * The global camera instance.
61
78
  */
62
- static camera: Camera;
79
+ static get camera(): Camera;
63
80
  private static _currentScene;
64
81
  /**
65
82
  * Gets the currently active scene.
package/dist/Engine.js CHANGED
@@ -18,11 +18,12 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
18
18
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
19
19
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
20
20
  };
21
- var _Engine_instances, _a, _Engine_canvas, _Engine_ctx, _Engine_window, _Engine_title, _Engine_oldTimestamp, _Engine_secondsPassed, _Engine_accumulator, _Engine_fixedDelta, _Engine_onLoad, _Engine_update, _Engine_fixedUpdate, _Engine_setBackground, _Engine_draw, _Engine_drawDebug, _Engine_findAllObjects, _Engine_getSortedArray;
21
+ var _Engine_instances, _a, _Engine_canvas, _Engine_ctx, _Engine_window, _Engine_title, _Engine_oldTimestamp, _Engine_secondsPassed, _Engine_accumulator, _Engine_fixedDelta, _Engine_onLoad, _Engine_update, _Engine_fixedUpdate, _Engine_setBackground, _Engine_draw, _Engine_drawDebug, _Engine_findAllObjects;
22
22
  import Canvas from './Canvas.js';
23
23
  import Input from './Input.js';
24
24
  import Camera from './Camera.js';
25
- import PhysicsComponent from './PhysicsComponent.js';
25
+ import PhysicsSystem from './PhysicsSystem.js';
26
+ import RenderingSystem from './RenderingSystem.js';
26
27
  /**
27
28
  * Specialized Set for managing game objects with helper methods.
28
29
  */
@@ -36,10 +37,69 @@ export class ObjectSet extends Set {
36
37
  this.findAll = () => [];
37
38
  }
38
39
  }
40
+ /**
41
+ * Shared state for the engine to ensure singletons work across different module loads.
42
+ */
43
+ const _globalState = globalThis.__DINO_ENGINE_STATE__ || {
44
+ objects: new ObjectSet(),
45
+ paused: false,
46
+ debug: false,
47
+ selectedObject: null,
48
+ camera: new Camera(),
49
+ systems: [new PhysicsSystem()],
50
+ events: new EventTarget()
51
+ };
52
+ globalThis.__DINO_ENGINE_STATE__ = _globalState;
39
53
  /**
40
54
  * The core singleton class that manages the game loop, rendering, and scene state.
41
55
  */
42
56
  class Engine {
57
+ /**
58
+ * Global set of game objects if no scene is active.
59
+ */
60
+ static get objects() { return _globalState.objects; }
61
+ /**
62
+ * Global list of systems that process game objects.
63
+ */
64
+ static get _systems() { return _globalState.systems; }
65
+ /**
66
+ * The global rendering system.
67
+ */
68
+ static get renderingSystem() { return _globalState.renderingSystem; }
69
+ static set renderingSystem(val) { _globalState.renderingSystem = val; }
70
+ /**
71
+ * Whether the game loop is currently paused.
72
+ */
73
+ static get paused() { return _globalState.paused; }
74
+ static set paused(val) {
75
+ if (_globalState.paused !== val) {
76
+ _globalState.paused = val;
77
+ _globalState.events.dispatchEvent(new CustomEvent('paused', { detail: val }));
78
+ }
79
+ }
80
+ /**
81
+ * Toggle for visual debug mode (hitboxes and stats).
82
+ */
83
+ static get debug() { return _globalState.debug; }
84
+ static set debug(val) {
85
+ if (_globalState.debug !== val) {
86
+ _globalState.debug = val;
87
+ _globalState.events.dispatchEvent(new CustomEvent('debug', { detail: val }));
88
+ }
89
+ }
90
+ /**
91
+ * Global event bus for engine events.
92
+ */
93
+ static get events() { return _globalState.events; }
94
+ /**
95
+ * The currently selected object in debug mode.
96
+ */
97
+ static get selectedObject() { return _globalState.selectedObject; }
98
+ static set selectedObject(val) { _globalState.selectedObject = val; }
99
+ /**
100
+ * The global camera instance.
101
+ */
102
+ static get camera() { return _globalState.camera; }
43
103
  /**
44
104
  * Gets the currently active scene.
45
105
  */
@@ -91,6 +151,12 @@ class Engine {
91
151
  __classPrivateFieldSet(this, _Engine_ctx, __classPrivateFieldGet(this, _Engine_canvas, "f").canvas.getContext('2d'), "f");
92
152
  this.width = __classPrivateFieldGet(this, _Engine_canvas, "f").canvas.width;
93
153
  this.height = __classPrivateFieldGet(this, _Engine_canvas, "f").canvas.height;
154
+ if (_a.renderingSystem) {
155
+ _a.renderingSystem.setContext(__classPrivateFieldGet(this, _Engine_ctx, "f"));
156
+ }
157
+ else {
158
+ _a.renderingSystem = new RenderingSystem(__classPrivateFieldGet(this, _Engine_ctx, "f"));
159
+ }
94
160
  __classPrivateFieldSet(this, _Engine_window, document.createElement('div'), "f");
95
161
  __classPrivateFieldGet(this, _Engine_window, "f").id = 'canvas-container';
96
162
  __classPrivateFieldGet(this, _Engine_window, "f").style.width = defaultedOpts.width;
@@ -199,15 +265,9 @@ _a = Engine, _Engine_canvas = new WeakMap(), _Engine_ctx = new WeakMap(), _Engin
199
265
  window.requestAnimationFrame(__classPrivateFieldGet(this, _Engine_instances, "m", _Engine_update).bind(this));
200
266
  }, _Engine_fixedUpdate = function _Engine_fixedUpdate() {
201
267
  const objects = _a.currentScene ? _a.currentScene.objects : _a.objects;
202
- objects.forEach((object) => {
203
- const physics = object.getComponent(PhysicsComponent);
204
- if (physics) {
205
- // Apply acceleration to velocity
206
- physics.velocity.x += physics.acceleration.x * __classPrivateFieldGet(this, _Engine_fixedDelta, "f");
207
- physics.velocity.y += physics.acceleration.y * __classPrivateFieldGet(this, _Engine_fixedDelta, "f");
208
- // Apply velocity to position
209
- object.position.x += physics.velocity.x * __classPrivateFieldGet(this, _Engine_fixedDelta, "f");
210
- object.position.y += physics.velocity.y * __classPrivateFieldGet(this, _Engine_fixedDelta, "f");
268
+ _a._systems.forEach((system) => {
269
+ if (system.fixedUpdate) {
270
+ system.fixedUpdate(objects, __classPrivateFieldGet(this, _Engine_fixedDelta, "f"));
211
271
  }
212
272
  });
213
273
  if (this.callbacks.fixedUpdate) {
@@ -219,38 +279,13 @@ _a = Engine, _Engine_canvas = new WeakMap(), _Engine_ctx = new WeakMap(), _Engin
219
279
  }, _Engine_draw = function _Engine_draw() {
220
280
  __classPrivateFieldGet(this, _Engine_instances, "m", _Engine_setBackground).call(this);
221
281
  const objects = _a.currentScene ? _a.currentScene.objects : _a.objects;
222
- const bounds = _a.camera.getViewportBounds(this.width, this.height);
223
- __classPrivateFieldGet(this, _Engine_ctx, "f").save();
224
- // Apply camera transform
225
- __classPrivateFieldGet(this, _Engine_ctx, "f").scale(_a.camera.zoom, _a.camera.zoom);
226
- __classPrivateFieldGet(this, _Engine_ctx, "f").translate(-_a.camera.position.x, -_a.camera.position.y);
227
- __classPrivateFieldGet(_a, _a, "m", _Engine_getSortedArray).call(_a, objects).forEach((object) => {
228
- // Frustum Culling
229
- if (object.position.x < bounds.x + bounds.width &&
230
- object.position.x + object.width > bounds.x &&
231
- object.position.y < bounds.y + bounds.height &&
232
- object.position.y + object.height > bounds.y) {
233
- object.draw(__classPrivateFieldGet(this, _Engine_ctx, "f"));
234
- }
235
- });
282
+ if (_a.renderingSystem) {
283
+ _a.renderingSystem.update(objects, 0, _a.debug);
284
+ }
236
285
  if (_a.debug) {
237
286
  __classPrivateFieldGet(this, _Engine_instances, "m", _Engine_drawDebug).call(this, objects);
238
287
  }
239
- __classPrivateFieldGet(this, _Engine_ctx, "f").restore();
240
288
  }, _Engine_drawDebug = function _Engine_drawDebug(objects) {
241
- __classPrivateFieldGet(this, _Engine_ctx, "f").strokeStyle = 'red';
242
- __classPrivateFieldGet(this, _Engine_ctx, "f").lineWidth = 1;
243
- __classPrivateFieldGet(this, _Engine_ctx, "f").font = '12px monospace';
244
- __classPrivateFieldGet(this, _Engine_ctx, "f").fillStyle = 'red';
245
- objects.forEach((obj) => {
246
- // Draw hitbox
247
- __classPrivateFieldGet(this, _Engine_ctx, "f").strokeStyle = obj === _a.selectedObject ? '#00ff00' : 'red';
248
- __classPrivateFieldGet(this, _Engine_ctx, "f").lineWidth = obj === _a.selectedObject ? 2 : 1;
249
- __classPrivateFieldGet(this, _Engine_ctx, "f").strokeRect(obj.position.x, obj.position.y, obj.width, obj.height);
250
- // Draw tag
251
- __classPrivateFieldGet(this, _Engine_ctx, "f").fillStyle = __classPrivateFieldGet(this, _Engine_ctx, "f").strokeStyle;
252
- __classPrivateFieldGet(this, _Engine_ctx, "f").fillText(obj.tag || 'obj', obj.position.x, obj.position.y - 5);
253
- });
254
289
  // Draw Stats Overlay (Top Right)
255
290
  __classPrivateFieldGet(this, _Engine_ctx, "f").save();
256
291
  __classPrivateFieldGet(this, _Engine_ctx, "f").setTransform(1, 0, 0, 1, 0, 0); // Reset transform for UI
@@ -296,30 +331,6 @@ _a = Engine, _Engine_canvas = new WeakMap(), _Engine_ctx = new WeakMap(), _Engin
296
331
  __classPrivateFieldGet(this, _Engine_ctx, "f").restore();
297
332
  }, _Engine_findAllObjects = function _Engine_findAllObjects(tag = '') {
298
333
  return Array.from(_a.objects).filter((obj) => obj.tag === tag);
299
- }, _Engine_getSortedArray = function _Engine_getSortedArray(objects = _a.objects) {
300
- const arr = Array.from(objects);
301
- arr.sort((a, b) => (a.zIndex > b.zIndex ? 1 : -1));
302
- return arr;
303
334
  };
304
- /**
305
- * Global set of game objects if no scene is active.
306
- */
307
- Engine.objects = new ObjectSet();
308
- /**
309
- * Whether the game loop is currently paused.
310
- */
311
- Engine.paused = false;
312
- /**
313
- * Toggle for visual debug mode (hitboxes and stats).
314
- */
315
- Engine.debug = false;
316
- /**
317
- * The currently selected object in debug mode.
318
- */
319
- Engine.selectedObject = null;
320
- /**
321
- * The global camera instance.
322
- */
323
- Engine.camera = new Camera();
324
335
  export default Engine;
325
336
  //# sourceMappingURL=Engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"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"}
@@ -78,24 +78,19 @@ export default abstract class GameObject {
78
78
  * Checks if this entity has a component of the specified class.
79
79
  * @param componentClass The class of the component to check for.
80
80
  */
81
- hasComponent<T extends Component>(componentClass: {
82
- new (...args: unknown[]): T;
81
+ hasComponent<T extends Component>(componentClass: Function & {
82
+ prototype: T;
83
83
  }): boolean;
84
84
  /** Gets a component from this entity by its class.
85
85
  * @param componentClass The class of the component to retrieve.
86
86
  */
87
- getComponent<T extends Component>(componentClass: {
88
- new (...args: unknown[]): T;
87
+ getComponent<T extends Component>(componentClass: Function & {
88
+ prototype: T;
89
89
  }): T | undefined;
90
90
  /** The width of the object in pixels. */
91
91
  abstract get width(): number;
92
92
  /** The height of the object in pixels. */
93
93
  abstract get height(): number;
94
- /**
95
- * Main rendering method for the object.
96
- * @param ctx The canvas 2D rendering context.
97
- */
98
- abstract draw(ctx: CanvasRenderingContext2D): void;
99
94
  /**
100
95
  * Registers the object with the active scene or global engine loop.
101
96
  */
@@ -78,6 +78,11 @@ export default class GameObject {
78
78
  addComponent(component) {
79
79
  const key = component.constructor.name;
80
80
  this._components.set(key, component);
81
+ // Also index by RenderComponent if it is one, to allow abstract querying.
82
+ // Use flag instead of instanceof to work across potential module duplications.
83
+ if (component.isRenderComponent) {
84
+ this._components.set('RenderComponent', component);
85
+ }
81
86
  component.gameObject = this;
82
87
  }
83
88
  /**
@@ -91,12 +96,14 @@ export default class GameObject {
91
96
  * Checks if this entity has a component of the specified class.
92
97
  * @param componentClass The class of the component to check for.
93
98
  */
99
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
94
100
  hasComponent(componentClass) {
95
101
  return this._components.has(componentClass.name);
96
102
  }
97
103
  /** Gets a component from this entity by its class.
98
104
  * @param componentClass The class of the component to retrieve.
99
105
  */
106
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
100
107
  getComponent(componentClass) {
101
108
  return this._components.get(componentClass.name);
102
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GameObject.js","sourceRoot":"","sources":["../src/GameObject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GameObject.js","sourceRoot":"","sources":["../src/GameObject.ts"],"names":[],"mappings":"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"}
package/dist/Line.d.ts CHANGED
@@ -36,6 +36,4 @@ export default class Line extends GameObject {
36
36
  /** Gets the bounding box height of the line. */
37
37
  get height(): number;
38
38
  constructor(props: LineProperties);
39
- /** Draws the line onto the provided rendering context. */
40
- draw(ctx: CanvasRenderingContext2D): void;
41
39
  }
package/dist/Line.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import GameObject from './GameObject.js';
2
2
  import Vector2 from './Vector2.js';
3
+ import LineComponent from './LineComponent.js';
3
4
  const defaultProps = {
4
5
  tag: 'line',
5
6
  width: 1,
@@ -25,16 +26,8 @@ export default class Line extends GameObject {
25
26
  this.y1 = defaultedProps.p1.y;
26
27
  this.x2 = defaultedProps.p2.x;
27
28
  this.y2 = defaultedProps.p2.y;
29
+ this.addComponent(new LineComponent(this.strokeWidth, defaultedProps.p1, defaultedProps.p2));
28
30
  this.registerSelf();
29
31
  }
30
- /** Draws the line onto the provided rendering context. */
31
- draw(ctx) {
32
- if (!this.visible)
33
- return;
34
- ctx.lineWidth = this.strokeWidth;
35
- ctx.moveTo(this.x1, this.y1);
36
- ctx.lineTo(this.x2, this.y2);
37
- ctx.stroke();
38
- }
39
32
  }
40
33
  //# sourceMappingURL=Line.js.map
package/dist/Line.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Line.js","sourceRoot":"","sources":["../src/Line.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,OAAO,MAAM,cAAc,CAAC;AAkBnC,MAAM,YAAY,GAAG;IACnB,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,EAAE,EAAE,IAAI,OAAO,EAAE;IACjB,EAAE,EAAE,IAAI,OAAO,EAAE;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,UAAU;IAY1C,8CAA8C;IAC9C,IAAI,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,+CAA+C;IAC/C,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,gDAAgD;IAChD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpD,YAAY,KAAqB;QAC/B,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1E,MAAM,cAAc,mCACf,YAAY,GACZ,KAAK,CACT,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,0DAA0D;IAC1D,IAAI,CAAC,GAA6B;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,GAAG,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"Line.js","sourceRoot":"","sources":["../src/Line.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAkB/C,MAAM,YAAY,GAAG;IACnB,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,EAAE,EAAE,IAAI,OAAO,EAAE;IACjB,EAAE,EAAE,IAAI,OAAO,EAAE;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,UAAU;IAY1C,8CAA8C;IAC9C,IAAI,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,+CAA+C;IAC/C,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,gDAAgD;IAChD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpD,YAAY,KAAqB;QAC/B,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1E,MAAM,cAAc,mCACf,YAAY,GACZ,KAAK,CACT,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7F,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import RenderComponent from './RenderComponent.js';
2
+ import Vector2 from './Vector2.js';
3
+ /**
4
+ * Component that holds data for rendering a line.
5
+ */
6
+ export default class LineComponent extends RenderComponent {
7
+ /** Stroke width of the line. */
8
+ strokeWidth: number;
9
+ /** Start point of the line. */
10
+ p1: Vector2;
11
+ /** End point of the line. */
12
+ p2: Vector2;
13
+ constructor(strokeWidth: number, p1: Vector2, p2: Vector2);
14
+ /**
15
+ * Draws the line to the canvas.
16
+ * @param ctx The canvas 2D rendering context.
17
+ */
18
+ draw(ctx: CanvasRenderingContext2D): void;
19
+ }
@@ -0,0 +1,25 @@
1
+ import RenderComponent from './RenderComponent.js';
2
+ /**
3
+ * Component that holds data for rendering a line.
4
+ */
5
+ export default class LineComponent extends RenderComponent {
6
+ constructor(strokeWidth, p1, p2) {
7
+ super();
8
+ this.strokeWidth = strokeWidth;
9
+ this.p1 = p1;
10
+ this.p2 = p2;
11
+ }
12
+ /**
13
+ * Draws the line to the canvas.
14
+ * @param ctx The canvas 2D rendering context.
15
+ */
16
+ draw(ctx) {
17
+ ctx.beginPath();
18
+ ctx.lineWidth = this.strokeWidth;
19
+ ctx.moveTo(this.p1.x, this.p1.y);
20
+ ctx.lineTo(this.p2.x, this.p2.y);
21
+ ctx.stroke();
22
+ ctx.closePath();
23
+ }
24
+ }
25
+ //# sourceMappingURL=LineComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineComponent.js","sourceRoot":"","sources":["../src/LineComponent.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAGnD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,eAAe;IAQxD,YAAY,WAAmB,EAAE,EAAW,EAAE,EAAW;QACvD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,GAA6B;QAChC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,GAAG,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import System from './System.js';
2
+ import type GameObject from './GameObject.js';
3
+ /**
4
+ * A system that processes entities with PhysicsComponents.
5
+ * Handles movement, velocity, and acceleration.
6
+ */
7
+ export default class PhysicsSystem extends System {
8
+ /**
9
+ * Updates the position of entities based on their velocity and acceleration.
10
+ * @param entities All game objects.
11
+ * @param fixedDelta The fixed time step.
12
+ */
13
+ fixedUpdate(entities: Set<GameObject>, fixedDelta: number): void;
14
+ }
@@ -0,0 +1,27 @@
1
+ import System from './System.js';
2
+ import PhysicsComponent from './PhysicsComponent.js';
3
+ /**
4
+ * A system that processes entities with PhysicsComponents.
5
+ * Handles movement, velocity, and acceleration.
6
+ */
7
+ export default class PhysicsSystem extends System {
8
+ /**
9
+ * Updates the position of entities based on their velocity and acceleration.
10
+ * @param entities All game objects.
11
+ * @param fixedDelta The fixed time step.
12
+ */
13
+ fixedUpdate(entities, fixedDelta) {
14
+ entities.forEach((object) => {
15
+ const physics = object.getComponent(PhysicsComponent);
16
+ if (physics) {
17
+ // Apply acceleration to velocity
18
+ physics.velocity.x += physics.acceleration.x * fixedDelta;
19
+ physics.velocity.y += physics.acceleration.y * fixedDelta;
20
+ // Apply velocity to position
21
+ object.position.x += physics.velocity.x * fixedDelta;
22
+ object.position.y += physics.velocity.y * fixedDelta;
23
+ }
24
+ });
25
+ }
26
+ }
27
+ //# sourceMappingURL=PhysicsSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhysicsSystem.js","sourceRoot":"","sources":["../src/PhysicsSystem.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,MAAM;IAC/C;;;;OAIG;IACa,WAAW,CAAC,QAAyB,EAAE,UAAkB;QACvE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YACtD,IAAI,OAAO,EAAE,CAAC;gBACZ,iCAAiC;gBACjC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,UAAU,CAAC;gBAC1D,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,UAAU,CAAC;gBAE1D,6BAA6B;gBAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC;gBACrD,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -32,6 +32,4 @@ export default class Rectangle extends GameObject {
32
32
  get height(): number;
33
33
  set height(val: number);
34
34
  constructor(props: RectProps);
35
- /** Draws the rectangle onto the provided rendering context. */
36
- draw(ctx: CanvasRenderingContext2D): void;
37
35
  }
package/dist/Rectangle.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import Vector2 from './Vector2.js';
2
2
  import GameObject from './GameObject.js';
3
+ import ShapeComponent from './ShapeComponent.js';
3
4
  const defaultProps = {
4
5
  tag: 'rect', colour: 'black', zIndex: 0,
5
6
  };
@@ -28,14 +29,8 @@ export default class Rectangle extends GameObject {
28
29
  this._height = defaultedProps.height;
29
30
  this.colour = defaultedProps.colour;
30
31
  this.zIndex = defaultedProps.zIndex;
32
+ this.addComponent(new ShapeComponent('rect', this.colour, this._width, this._height));
31
33
  this.registerSelf();
32
34
  }
33
- /** Draws the rectangle onto the provided rendering context. */
34
- draw(ctx) {
35
- if (!this.visible)
36
- return;
37
- ctx.fillStyle = this.colour;
38
- ctx.fillRect(this.position.x, this.position.y, this.width, this.height);
39
- }
40
35
  }
41
36
  //# sourceMappingURL=Rectangle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Rectangle.js","sourceRoot":"","sources":["../src/Rectangle.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAoBzC,MAAM,YAAY,GAAG;IACnB,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;CACxC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,UAAU;IAM/C,8BAA8B;IAC9B,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;IACrC,+BAA+B;IAC/B,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;IAEvC,YAAY,KAAgB;QAC1B,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1E,MAAM,cAAc,mCACf,YAAY,GACZ,KAAK,CACT,CAAA;QAED,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,YAAY,OAAO,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QAEpC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,GAA6B;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,GAAG,CAAC,QAAQ,CACV,IAAI,CAAC,QAAQ,CAAC,CAAC,EACf,IAAI,CAAC,QAAQ,CAAC,CAAC,EACf,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"Rectangle.js","sourceRoot":"","sources":["../src/Rectangle.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAoBjD,MAAM,YAAY,GAAG;IACnB,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;CACxC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,UAAU;IAM/C,8BAA8B;IAC9B,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;IACrC,+BAA+B;IAC/B,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;IAEvC,YAAY,KAAgB;QAC1B,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1E,MAAM,cAAc,mCACf,YAAY,GACZ,KAAK,CACT,CAAA;QAED,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,YAAY,OAAO,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QAEpC,IAAI,CAAC,YAAY,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAEtF,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import Component from './Component.js';
2
+ /**
3
+ * Base class for all rendering-related components.
4
+ */
5
+ export default abstract class RenderComponent extends Component {
6
+ /** Internal flag to identify rendering components across module instances. */
7
+ readonly isRenderComponent: boolean;
8
+ /**
9
+ * The actual rendering logic moved from GameObject.
10
+ * @param ctx The canvas 2D rendering context.
11
+ */
12
+ abstract draw(ctx: CanvasRenderingContext2D): void;
13
+ }
@@ -0,0 +1,12 @@
1
+ import Component from './Component.js';
2
+ /**
3
+ * Base class for all rendering-related components.
4
+ */
5
+ export default class RenderComponent extends Component {
6
+ constructor() {
7
+ super(...arguments);
8
+ /** Internal flag to identify rendering components across module instances. */
9
+ this.isRenderComponent = true;
10
+ }
11
+ }
12
+ //# sourceMappingURL=RenderComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderComponent.js","sourceRoot":"","sources":["../src/RenderComponent.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAgB,eAAgB,SAAQ,SAAS;IAA/D;;QACE,8EAA8E;QAC9D,sBAAiB,GAAY,IAAI,CAAC;IAOpD,CAAC;CAAA"}