dino-ge 1.10.1 → 1.10.3

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/Engine.d.ts CHANGED
@@ -60,6 +60,8 @@ export interface EngineState {
60
60
  }[];
61
61
  showPhysicsVectors: boolean;
62
62
  showCollisionLines: boolean;
63
+ zOrderDirty: boolean;
64
+ sortedObjects: GameObject[];
63
65
  }
64
66
  /**
65
67
  * The core singleton class that manages the game loop, rendering, and scene state.
@@ -67,6 +69,11 @@ export interface EngineState {
67
69
  export default class Engine {
68
70
  /** Internal helper to access the global shared state. */
69
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;
70
77
  /**
71
78
  * Global set of game objects if no scene is active.
72
79
  */
@@ -87,6 +94,10 @@ export default class Engine {
87
94
  manifold: CollisionManifold;
88
95
  timestamp: number;
89
96
  }[];
97
+ static set debugCollisions(val: {
98
+ manifold: CollisionManifold;
99
+ timestamp: number;
100
+ }[]);
90
101
  /**
91
102
  * Whether to show velocity/acceleration vectors in debug mode.
92
103
  */
@@ -134,6 +145,16 @@ export default class Engine {
134
145
  */
135
146
  static get selectedObject(): GameObject | null;
136
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[]);
137
158
  /**
138
159
  * The global camera instance.
139
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();
@@ -386,6 +409,7 @@ export default class Engine {
386
409
  * @param object The object to register.
387
410
  */
388
411
  static registerObject(object) {
412
+ this.zOrderDirty = true;
389
413
  if (Engine.currentScene) {
390
414
  Engine.currentScene.add(object);
391
415
  }
@@ -398,6 +422,7 @@ export default class Engine {
398
422
  * @param object The object to destroy.
399
423
  */
400
424
  static destroyObject(object) {
425
+ this.zOrderDirty = true;
401
426
  if (this.selectedObject === object) {
402
427
  this.selectedObject = null;
403
428
  }
@@ -410,6 +435,7 @@ export default class Engine {
410
435
  }
411
436
  /** Destroy all objects in the active scene or global engine. */
412
437
  static destroyAll() {
438
+ this.zOrderDirty = true;
413
439
  if (Engine.currentScene) {
414
440
  Engine.currentScene.clear();
415
441
  }
@@ -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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"}
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.
@@ -26,15 +47,38 @@ export default class TransformComponent extends Component {
26
47
  */
27
48
  removeChild(child: TransformComponent): void;
28
49
  /**
29
- * Calculates the world-space position.
50
+ * Gets the world-space position.
51
+ * Note: This returns a clone to prevent accidental cache mutation.
52
+ * For performance, use getWorldPosition(out).
30
53
  */
31
54
  get worldPosition(): Vector2;
55
+ /**
56
+ * Writes the world-space position into the provided 'out' vector.
57
+ * Allocation-free alternative to the worldPosition getter.
58
+ * @param out The vector to write into.
59
+ * @returns The 'out' vector for chaining.
60
+ */
61
+ getWorldPosition(out: Vector2): Vector2;
32
62
  /**
33
63
  * Calculates the world-space rotation.
34
64
  */
35
65
  get worldRotation(): number;
36
66
  /**
37
67
  * Calculates the world-space scale.
68
+ * Note: This returns a clone to prevent accidental cache mutation.
69
+ * For performance, use getWorldScale(out).
38
70
  */
39
71
  get worldScale(): Vector2;
72
+ /**
73
+ * Writes the world-space scale into the provided 'out' vector.
74
+ * Allocation-free alternative to the worldScale getter.
75
+ * @param out The vector to write into.
76
+ * @returns The 'out' vector for chaining.
77
+ */
78
+ getWorldScale(out: Vector2): Vector2;
79
+ /**
80
+ * Recalculates all world-space properties from the root parent down.
81
+ * @private
82
+ */
83
+ private updateWorldTransform;
40
84
  }
@@ -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,94 @@ 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
- * Calculates the world-space position.
87
+ * Gets the world-space position.
88
+ * Note: This returns a clone to prevent accidental cache mutation.
89
+ * For performance, use getWorldPosition(out).
44
90
  */
45
91
  get worldPosition() {
46
- if (!this.parent) {
47
- return new Vector2(this.position.x, this.position.y);
92
+ if (this._isDirty) {
93
+ this.updateWorldTransform();
48
94
  }
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;
95
+ return this._worldPosition.clone();
96
+ }
97
+ /**
98
+ * Writes the world-space position into the provided 'out' vector.
99
+ * Allocation-free alternative to the worldPosition getter.
100
+ * @param out The vector to write into.
101
+ * @returns The 'out' vector for chaining.
102
+ */
103
+ getWorldPosition(out) {
104
+ if (this._isDirty) {
105
+ this.updateWorldTransform();
62
106
  }
63
- return new Vector2(parentWorldPos.x + localX, parentWorldPos.y + localY);
107
+ return out.copy(this._worldPosition);
64
108
  }
65
109
  /**
66
110
  * Calculates the world-space rotation.
67
111
  */
68
112
  get worldRotation() {
69
- if (!this.parent) {
70
- return this.rotation;
113
+ if (this._isDirty) {
114
+ this.updateWorldTransform();
71
115
  }
72
- return this.parent.worldRotation + this.rotation;
116
+ return this._worldRotation;
73
117
  }
74
118
  /**
75
119
  * Calculates the world-space scale.
120
+ * Note: This returns a clone to prevent accidental cache mutation.
121
+ * For performance, use getWorldScale(out).
76
122
  */
77
123
  get worldScale() {
124
+ if (this._isDirty) {
125
+ this.updateWorldTransform();
126
+ }
127
+ return this._worldScale.clone();
128
+ }
129
+ /**
130
+ * Writes the world-space scale into the provided 'out' vector.
131
+ * Allocation-free alternative to the worldScale getter.
132
+ * @param out The vector to write into.
133
+ * @returns The 'out' vector for chaining.
134
+ */
135
+ getWorldScale(out) {
136
+ if (this._isDirty) {
137
+ this.updateWorldTransform();
138
+ }
139
+ return out.copy(this._worldScale);
140
+ }
141
+ /**
142
+ * Recalculates all world-space properties from the root parent down.
143
+ * @private
144
+ */
145
+ updateWorldTransform() {
78
146
  if (!this.parent) {
79
- return new Vector2(this.scale.x, this.scale.y);
147
+ this._worldPosition.x = this.position.x;
148
+ this._worldPosition.y = this.position.y;
149
+ this._worldRotation = this.rotation;
150
+ this._worldScale.x = this.scale.x;
151
+ this._worldScale.y = this.scale.y;
152
+ }
153
+ else {
154
+ const parentWorldPos = this.parent.worldPosition;
155
+ const parentWorldRot = this.parent.worldRotation;
156
+ const parentWorldScale = this.parent.worldScale;
157
+ // Apply parent's scale and rotation to local position
158
+ const localX = this.position.x * parentWorldScale.x;
159
+ const localY = this.position.y * parentWorldScale.y;
160
+ const cos = Math.cos(parentWorldRot);
161
+ const sin = Math.sin(parentWorldRot);
162
+ const rotatedX = localX * cos - localY * sin;
163
+ const rotatedY = localX * sin + localY * cos;
164
+ this._worldPosition.x = parentWorldPos.x + rotatedX;
165
+ this._worldPosition.y = parentWorldPos.y + rotatedY;
166
+ this._worldRotation = parentWorldRot + this.rotation;
167
+ this._worldScale.x = parentWorldScale.x * this.scale.x;
168
+ this._worldScale.y = parentWorldScale.y * this.scale.y;
80
169
  }
81
- const parentScale = this.parent.worldScale;
82
- return new Vector2(parentScale.x * this.scale.x, parentScale.y * this.scale.y);
170
+ this._isDirty = false;
83
171
  }
84
172
  }
85
173
  //# 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":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,SAAS;IAKvD,6CAA6C;IAC7C,IAAI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,IAAI,QAAQ,CAAC,GAAY;QACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,wDAAwD;IACxD,IAAI,QAAQ,KAAa,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,GAAW;QACtB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,0CAA0C;IAC1C,IAAI,KAAK,KAAc,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,GAAY;QACpB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAaD;QACE,KAAK,EAAE,CAAC;QAvCF,cAAS,GAAY,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,cAAS,GAAW,CAAC,CAAC;QACtB,WAAM,GAAY,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QA2B5C,mCAAmC;QACnC,aAAQ,GAA4B,IAAI,GAAG,EAAE,CAAC;QAE9C,mCAAmC;QAC3B,aAAQ,GAAG,IAAI,CAAC;QAChB,mBAAc,GAAY,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,mBAAc,GAAW,CAAC,CAAC;QAC3B,gBAAW,GAAY,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAI/C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED;;;OAGG;IACK,sBAAsB;QAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAyB;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO;QAElC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,CAAC,QAAQ,EAAE,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,KAAyB;QACnC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC1B,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,IAAI,aAAa;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,GAAY;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,GAAY;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YACjD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAEhD,sDAAsD;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;YAEpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAErC,MAAM,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;YAE7C,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC;YACpD,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC;YACpD,IAAI,CAAC,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;CACF"}
package/dist/Vector2.d.ts CHANGED
@@ -1,12 +1,32 @@
1
1
  /**
2
2
  * Class representing a 2D vector or point.
3
+ * Implements a fluent, mutating API to reduce object allocations.
3
4
  */
4
5
  export default class Vector2 {
6
+ private _x;
7
+ private _y;
8
+ /** Optional callback fired when x or y is modified. */
9
+ onChange?: () => void;
5
10
  /** X coordinate. */
6
- x: number;
11
+ get x(): number;
12
+ set x(val: number);
7
13
  /** Y coordinate. */
8
- y: number;
14
+ get y(): number;
15
+ set y(val: number);
9
16
  constructor(x?: number, y?: number);
17
+ /**
18
+ * Sets the components of this vector.
19
+ * @param x New x coordinate.
20
+ * @param y New y coordinate.
21
+ * @returns This vector for chaining.
22
+ */
23
+ set(x: number, y: number): this;
24
+ /**
25
+ * Copies the components of another vector into this one.
26
+ * @param other The vector to copy from.
27
+ * @returns This vector for chaining.
28
+ */
29
+ copy(other: Vector2): this;
10
30
  /**
11
31
  * Calculates the Euclidean distance between two vectors.
12
32
  * @param v1 First vector.
@@ -24,12 +44,26 @@ export default class Vector2 {
24
44
  get magnitude(): number;
25
45
  /** Returns a new normalized (unit length) version of this vector. */
26
46
  get normalized(): Vector2;
27
- /** Adds another vector to this one. */
28
- add(other: Vector2): Vector2;
29
- /** Subtracts another vector from this one. */
30
- subtract(other: Vector2): Vector2;
31
- /** Multiplies this vector by a scalar. */
32
- multiply(scalar: number): Vector2;
47
+ /**
48
+ * Normalizes this vector in place.
49
+ * @returns This vector for chaining.
50
+ */
51
+ normalize(): this;
52
+ /**
53
+ * Adds another vector to this one (mutates).
54
+ * @returns This vector for chaining.
55
+ */
56
+ add(other: Vector2): this;
57
+ /**
58
+ * Subtracts another vector from this one (mutates).
59
+ * @returns This vector for chaining.
60
+ */
61
+ subtract(other: Vector2): this;
62
+ /**
63
+ * Multiplies this vector by a scalar (mutates).
64
+ * @returns This vector for chaining.
65
+ */
66
+ multiply(scalar: number): this;
33
67
  /** Returns a copy of this vector. */
34
68
  clone(): Vector2;
35
69
  }
package/dist/Vector2.js CHANGED
@@ -1,10 +1,52 @@
1
1
  /**
2
2
  * Class representing a 2D vector or point.
3
+ * Implements a fluent, mutating API to reduce object allocations.
3
4
  */
4
5
  export default class Vector2 {
6
+ /** X coordinate. */
7
+ get x() { return this._x; }
8
+ set x(val) {
9
+ var _a;
10
+ if (this._x !== val) {
11
+ this._x = val;
12
+ (_a = this.onChange) === null || _a === void 0 ? void 0 : _a.call(this);
13
+ }
14
+ }
15
+ /** Y coordinate. */
16
+ get y() { return this._y; }
17
+ set y(val) {
18
+ var _a;
19
+ if (this._y !== val) {
20
+ this._y = val;
21
+ (_a = this.onChange) === null || _a === void 0 ? void 0 : _a.call(this);
22
+ }
23
+ }
5
24
  constructor(x = 0, y = 0) {
6
- this.x = x;
7
- this.y = y;
25
+ this._x = x;
26
+ this._y = y;
27
+ }
28
+ /**
29
+ * Sets the components of this vector.
30
+ * @param x New x coordinate.
31
+ * @param y New y coordinate.
32
+ * @returns This vector for chaining.
33
+ */
34
+ set(x, y) {
35
+ var _a;
36
+ if (this._x !== x || this._y !== y) {
37
+ this._x = x;
38
+ this._y = y;
39
+ (_a = this.onChange) === null || _a === void 0 ? void 0 : _a.call(this);
40
+ }
41
+ return this;
42
+ }
43
+ /**
44
+ * Copies the components of another vector into this one.
45
+ * @param other The vector to copy from.
46
+ * @returns This vector for chaining.
47
+ */
48
+ copy(other) {
49
+ return this.set(other.x, other.y);
8
50
  }
9
51
  /**
10
52
  * Calculates the Euclidean distance between two vectors.
@@ -27,28 +69,48 @@ export default class Vector2 {
27
69
  }
28
70
  /** Returns the length of the vector. */
29
71
  get magnitude() {
30
- return Math.sqrt(this.x * this.x + this.y * this.y);
72
+ return Math.sqrt(this._x * this._x + this._y * this._y);
31
73
  }
32
74
  /** Returns a new normalized (unit length) version of this vector. */
33
75
  get normalized() {
34
76
  const mag = this.magnitude;
35
77
  if (mag === 0)
36
78
  return new Vector2(0, 0);
37
- return new Vector2(this.x / mag, this.y / mag);
79
+ return new Vector2(this._x / mag, this._y / mag);
80
+ }
81
+ /**
82
+ * Normalizes this vector in place.
83
+ * @returns This vector for chaining.
84
+ */
85
+ normalize() {
86
+ const mag = this.magnitude;
87
+ if (mag !== 0) {
88
+ this.multiply(1 / mag);
89
+ }
90
+ return this;
38
91
  }
39
- /** Adds another vector to this one. */
92
+ /**
93
+ * Adds another vector to this one (mutates).
94
+ * @returns This vector for chaining.
95
+ */
40
96
  add(other) {
41
97
  this.x += other.x;
42
98
  this.y += other.y;
43
99
  return this;
44
100
  }
45
- /** Subtracts another vector from this one. */
101
+ /**
102
+ * Subtracts another vector from this one (mutates).
103
+ * @returns This vector for chaining.
104
+ */
46
105
  subtract(other) {
47
106
  this.x -= other.x;
48
107
  this.y -= other.y;
49
108
  return this;
50
109
  }
51
- /** Multiplies this vector by a scalar. */
110
+ /**
111
+ * Multiplies this vector by a scalar (mutates).
112
+ * @returns This vector for chaining.
113
+ */
52
114
  multiply(scalar) {
53
115
  this.x *= scalar;
54
116
  this.y *= scalar;
@@ -56,7 +118,7 @@ export default class Vector2 {
56
118
  }
57
119
  /** Returns a copy of this vector. */
58
120
  clone() {
59
- return new Vector2(this.x, this.y);
121
+ return new Vector2(this._x, this._y);
60
122
  }
61
123
  }
62
124
  //# sourceMappingURL=Vector2.js.map
@@ -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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dino-ge",
3
- "version": "1.10.1",
3
+ "version": "1.10.3",
4
4
  "description": "Lightweight, performant 2D game engine built with TypeScript",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",