sliver-engine 0.0.1-alpha.1 → 0.0.1-alpha.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.
@@ -1,8 +1,81 @@
1
1
  import type { GameObject } from "..";
2
2
  import type { Vector } from "../../Lib/Vector";
3
3
  type MirroringMode = "horizontal" | "vertical" | "both" | null;
4
+ type AnimationDefinition<TObj extends GameObject> = string[] | ((obj: TObj) => string[]);
5
+ type OptionValue<TObj extends GameObject, TValue> = TValue | ((obj: TObj) => TValue);
6
+ type RenderOptions<TObj extends GameObject> = {
7
+ when?: OptionValue<TObj, boolean>;
8
+ scale?: OptionValue<TObj, number>;
9
+ mirroring?: OptionValue<TObj, MirroringMode>;
10
+ overridePosition?: OptionValue<TObj, Vector>;
11
+ };
12
+ type TileAnimationOptions<TObj extends GameObject> = RenderOptions<TObj> & {
13
+ ticksPerFrame: OptionValue<TObj, number>;
14
+ };
4
15
  export declare const onColision: <TObj extends GameObject = GameObject>(predicate: (self: TObj, other: GameObject) => boolean, handler: (self: TObj, other: GameObject) => void) => (_target: Object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<(this: TObj, other: GameObject, penetration: Vector) => unknown>) => TypedPropertyDescriptor<(this: TObj, other: GameObject, penetration: Vector) => unknown>;
5
- export declare const renderSprite: <TObj extends GameObject = GameObject>(when: (obj: TObj) => boolean, spriteSheetName: string, index: number | ((obj: TObj) => number), scale?: number | ((obj: TObj) => number), _mirroring?: MirroringMode | ((obj: TObj) => MirroringMode), overridePosition?: (obj: TObj) => Vector) => (_target: Object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any>;
6
- export declare const renderSpriteAnimation: <TObj extends GameObject = GameObject>(when: (obj: TObj) => boolean, _spriteSheetName: ((obj: TObj) => string) | string, indexes: number[] | ((obj: TObj) => number[]), _ticksPerFrame: number | ((obj: TObj) => number), scale?: number | ((obj: TObj) => number), _mirroring?: MirroringMode | ((obj: TObj) => MirroringMode), overridePosition?: (obj: TObj) => Vector) => (_target: Object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any>;
16
+ /**
17
+ * Render a sprite definition by name.
18
+ *
19
+ * @param spriteDefinitionName - Sprite definition name (or a function returning one).
20
+ * @param options - Optional render settings.
21
+ * @param options.when - Render guard; defaults to true.
22
+ * @param options.scale - Scale multiplier; defaults to 1.
23
+ * @param options.mirroring - Mirror mode: horizontal, vertical, both, or null.
24
+ * @param options.overridePosition - Override draw position (defaults to object position).
25
+ *
26
+ * @example
27
+ * @renderSprite("human_down_0", { scale: 2 })
28
+ * @renderSprite((obj) => obj.spriteName, { mirroring: "horizontal" })
29
+ */
30
+ export declare const renderSprite: <TObj extends GameObject = GameObject>(spriteDefinitionName: OptionValue<TObj, string>, options?: RenderOptions<TObj>) => (_target: Object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any>;
31
+ /**
32
+ * Render a single tile from a sprite sheet by index.
33
+ *
34
+ * @param spriteSheetName - Sprite sheet name (or a function returning one).
35
+ * @param index - Frame index (or a function returning one).
36
+ * @param options - Optional render settings.
37
+ * @param options.when - Render guard; defaults to true.
38
+ * @param options.scale - Scale multiplier; defaults to 1.
39
+ * @param options.mirroring - Mirror mode: horizontal, vertical, both, or null.
40
+ * @param options.overridePosition - Override draw position (defaults to object position).
41
+ *
42
+ * @example
43
+ * @renderTile("items", 0, { scale: 4 })
44
+ * @renderTile("hero", (obj) => obj.frame, { when: (obj) => obj.visible })
45
+ */
46
+ export declare const renderTile: <TObj extends GameObject = GameObject>(spriteSheetName: OptionValue<TObj, string>, index: OptionValue<TObj, number>, options?: RenderOptions<TObj>) => (_target: Object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any>;
47
+ /**
48
+ * Render a sprite sheet animation by index list.
49
+ *
50
+ * @param spriteSheetName - Sprite sheet name (or a function returning one).
51
+ * @param indexes - Frame index list (or a function returning one).
52
+ * @param options - Animation + render settings.
53
+ * @param options.when - Render guard; defaults to true.
54
+ * @param options.ticksPerFrame - Ticks per frame; required.
55
+ * @param options.scale - Scale multiplier; defaults to 1.
56
+ * @param options.mirroring - Mirror mode: horizontal, vertical, both, or null.
57
+ * @param options.overridePosition - Override draw position (defaults to object position).
58
+ *
59
+ * @example
60
+ * @renderTileAnimation("hero", [0, 1, 2, 3], { ticksPerFrame: 6, scale: 2 })
61
+ * @renderTileAnimation("hero", (obj) => obj.frames, { ticksPerFrame: 4 })
62
+ */
63
+ export declare const renderTileAnimation: <TObj extends GameObject = GameObject>(spriteSheetName: OptionValue<TObj, string>, indexes: OptionValue<TObj, number[]>, options: TileAnimationOptions<TObj>) => (_target: Object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any>;
64
+ /**
65
+ * Render a sprite definition animation by name list.
66
+ *
67
+ * @param definitions - Sprite definition names (or a function returning them).
68
+ * @param options - Animation + render settings.
69
+ * @param options.when - Render guard; defaults to true.
70
+ * @param options.ticksPerFrame - Ticks per frame; required.
71
+ * @param options.scale - Scale multiplier; defaults to 1.
72
+ * @param options.mirroring - Mirror mode: horizontal, vertical, both, or null.
73
+ * @param options.overridePosition - Override draw position (defaults to object position).
74
+ *
75
+ * @example
76
+ * @renderSpriteAnimation(["human_down_0", "human_down_1"], { ticksPerFrame: 6 })
77
+ * @renderSpriteAnimation((obj) => obj.frames, { ticksPerFrame: 4, scale: 2 })
78
+ */
79
+ export declare const renderSpriteAnimation: <TObj extends GameObject = GameObject>(definitions: AnimationDefinition<TObj>, options: TileAnimationOptions<TObj>) => (_target: Object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) => TypedPropertyDescriptor<any>;
7
80
  export {};
8
81
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/GameObject/Decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAGrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,KAAK,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;AAE/D,eAAO,MAAM,UAAU,GAAI,IAAI,SAAS,UAAU,GAAG,UAAU,EAC7D,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,EACrD,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,MAG9C,SAAS,MAAM,EACf,cAAc,MAAM,GAAG,MAAM,EAC7B,YAAY,uBAAuB,CACjC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAChE,oCADQ,IAAI,SAAS,UAAU,eAAe,MAAM,KAAK,OAAO,CAoBpE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,IAAI,SAAS,UAAU,GAAG,UAAU,EAC/D,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,EAC5B,iBAAiB,MAAM,EACvB,OAAO,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,EACvC,QAAO,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAK,EAC3C,aAAY,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,aAAa,CAAQ,EACjE,mBAAmB,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,MAGtC,SAAS,MAAM,EACf,cAAc,MAAM,GAAG,MAAM,EAC7B,YAAY,uBAAuB,CAAC,GAAG,CAAC,iCAoC3C,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,IAAI,SAAS,UAAU,GAAG,UAAU,EACxE,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,EAC5B,kBAAkB,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,GAAG,MAAM,EAClD,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC,EAC7C,gBAAgB,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,EAChD,QAAO,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAK,EAC3C,aAAY,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,aAAa,CAAQ,EACjE,mBAAmB,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,MAGtC,SAAS,MAAM,EACf,cAAc,MAAM,GAAG,MAAM,EAC7B,YAAY,uBAAuB,CAAC,GAAG,CAAC,iCAoD3C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/GameObject/Decorators/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,9 @@
1
+ const resolveOption = (value, fallback, obj) => {
2
+ if (typeof value === "function") {
3
+ return value(obj);
4
+ }
5
+ return value ?? fallback;
6
+ };
1
7
  export const onColision = (predicate, handler) => {
2
8
  return function (_target, _propertyKey, descriptor) {
3
9
  const original = descriptor.value;
@@ -12,54 +18,163 @@ export const onColision = (predicate, handler) => {
12
18
  return descriptor;
13
19
  };
14
20
  };
15
- export const renderSprite = (when, spriteSheetName, index, scale = 1, _mirroring = null, overridePosition) => {
21
+ /**
22
+ * Render a sprite definition by name.
23
+ *
24
+ * @param spriteDefinitionName - Sprite definition name (or a function returning one).
25
+ * @param options - Optional render settings.
26
+ * @param options.when - Render guard; defaults to true.
27
+ * @param options.scale - Scale multiplier; defaults to 1.
28
+ * @param options.mirroring - Mirror mode: horizontal, vertical, both, or null.
29
+ * @param options.overridePosition - Override draw position (defaults to object position).
30
+ *
31
+ * @example
32
+ * @renderSprite("human_down_0", { scale: 2 })
33
+ * @renderSprite((obj) => obj.spriteName, { mirroring: "horizontal" })
34
+ */
35
+ export const renderSprite = (spriteDefinitionName, options = {}) => {
36
+ return function (_target, _propertyKey, descriptor) {
37
+ const original = descriptor.value;
38
+ if (!original)
39
+ return descriptor;
40
+ descriptor.value = function (canvas, scene) {
41
+ const shouldRender = resolveOption(options.when, true, this);
42
+ if (!shouldRender) {
43
+ return original.call(this, canvas, scene);
44
+ }
45
+ const spriteLib = canvas.getSpriteLibrary();
46
+ const context = canvas.getContext();
47
+ const definitionName = typeof spriteDefinitionName === "function"
48
+ ? spriteDefinitionName(this)
49
+ : spriteDefinitionName;
50
+ const position = resolveOption(options.overridePosition, this.getPosition(), this);
51
+ const resolvedScale = resolveOption(options.scale, 1, this);
52
+ const mirroring = resolveOption(options.mirroring, null, this);
53
+ const mirrorHorizontal = mirroring === "horizontal" || mirroring === "both";
54
+ const mirrorVertical = mirroring === "vertical" || mirroring === "both";
55
+ spriteLib.drawSpriteDefinition(context, definitionName, position, resolvedScale, mirrorHorizontal, mirrorVertical);
56
+ return original.call(this, canvas, scene);
57
+ };
58
+ return descriptor;
59
+ };
60
+ };
61
+ /**
62
+ * Render a single tile from a sprite sheet by index.
63
+ *
64
+ * @param spriteSheetName - Sprite sheet name (or a function returning one).
65
+ * @param index - Frame index (or a function returning one).
66
+ * @param options - Optional render settings.
67
+ * @param options.when - Render guard; defaults to true.
68
+ * @param options.scale - Scale multiplier; defaults to 1.
69
+ * @param options.mirroring - Mirror mode: horizontal, vertical, both, or null.
70
+ * @param options.overridePosition - Override draw position (defaults to object position).
71
+ *
72
+ * @example
73
+ * @renderTile("items", 0, { scale: 4 })
74
+ * @renderTile("hero", (obj) => obj.frame, { when: (obj) => obj.visible })
75
+ */
76
+ export const renderTile = (spriteSheetName, index, options = {}) => {
16
77
  return function (_target, _propertyKey, descriptor) {
17
78
  const original = descriptor.value;
18
79
  if (!original)
19
80
  return descriptor;
20
81
  descriptor.value = function (canvas, scene) {
21
- if (!when(this)) {
82
+ const shouldRender = resolveOption(options.when, true, this);
83
+ if (!shouldRender) {
22
84
  return original.call(this, canvas, scene);
23
85
  }
24
86
  const spriteLib = canvas.getSpriteLibrary();
25
87
  const context = canvas.getContext();
26
- const mirroring = typeof _mirroring === "function" ? _mirroring(this) : _mirroring;
27
- const position = overridePosition
28
- ? overridePosition(this)
29
- : this.getPosition();
30
- spriteLib.drawSpriteFrame(context, spriteSheetName, typeof index === "function" ? index(this) : index, position, typeof scale === "function" ? scale(this) : scale, mirroring === "horizontal" || mirroring === "both", mirroring === "vertical" || mirroring === "both");
88
+ const position = resolveOption(options.overridePosition, this.getPosition(), this);
89
+ const resolvedIndex = resolveOption(index, 0, this);
90
+ const resolvedScale = resolveOption(options.scale, 1, this);
91
+ const mirroring = resolveOption(options.mirroring, null, this);
92
+ spriteLib.drawSpriteFrame(context, resolveOption(spriteSheetName, "", this), resolvedIndex, position, resolvedScale, mirroring === "horizontal" || mirroring === "both", mirroring === "vertical" || mirroring === "both");
93
+ return original.call(this, canvas, scene);
94
+ };
95
+ return descriptor;
96
+ };
97
+ };
98
+ /**
99
+ * Render a sprite sheet animation by index list.
100
+ *
101
+ * @param spriteSheetName - Sprite sheet name (or a function returning one).
102
+ * @param indexes - Frame index list (or a function returning one).
103
+ * @param options - Animation + render settings.
104
+ * @param options.when - Render guard; defaults to true.
105
+ * @param options.ticksPerFrame - Ticks per frame; required.
106
+ * @param options.scale - Scale multiplier; defaults to 1.
107
+ * @param options.mirroring - Mirror mode: horizontal, vertical, both, or null.
108
+ * @param options.overridePosition - Override draw position (defaults to object position).
109
+ *
110
+ * @example
111
+ * @renderTileAnimation("hero", [0, 1, 2, 3], { ticksPerFrame: 6, scale: 2 })
112
+ * @renderTileAnimation("hero", (obj) => obj.frames, { ticksPerFrame: 4 })
113
+ */
114
+ export const renderTileAnimation = (spriteSheetName, indexes, options) => {
115
+ return function (_target, _propertyKey, descriptor) {
116
+ const original = descriptor.value;
117
+ if (!original)
118
+ return descriptor;
119
+ descriptor.value = function (canvas, scene) {
120
+ const shouldRender = resolveOption(options.when, true, this);
121
+ if (!shouldRender) {
122
+ return original.call(this, canvas, scene);
123
+ }
124
+ const spriteLib = canvas.getSpriteLibrary();
125
+ const context = canvas.getContext();
126
+ const gameContext = this.getContext();
127
+ const mirroring = resolveOption(options.mirroring, null, this);
128
+ const ticksPerFrame = resolveOption(options.ticksPerFrame, 1, this);
129
+ const position = resolveOption(options.overridePosition, this.getPosition(), this);
130
+ const resolvedScale = resolveOption(options.scale, 1, this);
131
+ const resolvedIndexes = resolveOption(indexes, [], this);
132
+ const frameIndex = Math.floor(gameContext.getTickCount() / ticksPerFrame) %
133
+ resolvedIndexes.length;
134
+ const spriteIndex = resolvedIndexes[frameIndex];
135
+ spriteLib.drawSpriteFrame(context, resolveOption(spriteSheetName, "", this), spriteIndex, position, resolvedScale, mirroring === "horizontal" || mirroring === "both", mirroring === "vertical" || mirroring === "both");
31
136
  return original.call(this, canvas, scene);
32
137
  };
33
138
  return descriptor;
34
139
  };
35
140
  };
36
- export const renderSpriteAnimation = (when, _spriteSheetName, indexes, _ticksPerFrame, scale = 1, _mirroring = null, overridePosition) => {
141
+ /**
142
+ * Render a sprite definition animation by name list.
143
+ *
144
+ * @param definitions - Sprite definition names (or a function returning them).
145
+ * @param options - Animation + render settings.
146
+ * @param options.when - Render guard; defaults to true.
147
+ * @param options.ticksPerFrame - Ticks per frame; required.
148
+ * @param options.scale - Scale multiplier; defaults to 1.
149
+ * @param options.mirroring - Mirror mode: horizontal, vertical, both, or null.
150
+ * @param options.overridePosition - Override draw position (defaults to object position).
151
+ *
152
+ * @example
153
+ * @renderSpriteAnimation(["human_down_0", "human_down_1"], { ticksPerFrame: 6 })
154
+ * @renderSpriteAnimation((obj) => obj.frames, { ticksPerFrame: 4, scale: 2 })
155
+ */
156
+ export const renderSpriteAnimation = (definitions, options) => {
37
157
  return function (_target, _propertyKey, descriptor) {
38
158
  const original = descriptor.value;
39
159
  if (!original)
40
160
  return descriptor;
41
161
  descriptor.value = function (canvas, scene) {
42
- if (!when(this)) {
162
+ const shouldRender = resolveOption(options.when, true, this);
163
+ if (!shouldRender) {
43
164
  return original.call(this, canvas, scene);
44
165
  }
45
166
  const spriteLib = canvas.getSpriteLibrary();
46
167
  const context = canvas.getContext();
47
168
  const gameContext = this.getContext();
48
- const mirroring = typeof _mirroring === "function" ? _mirroring(this) : _mirroring;
49
- const ticksPerFrame = typeof _ticksPerFrame === "number"
50
- ? _ticksPerFrame
51
- : _ticksPerFrame(this);
52
- const position = overridePosition
53
- ? overridePosition(this)
54
- : this.getPosition();
55
- const frameIndex = Math.floor(gameContext.getTickCount() / ticksPerFrame) % indexes.length;
56
- const spriteIndex = typeof indexes === "function"
57
- ? indexes(this)[frameIndex]
58
- : indexes[frameIndex];
59
- const spriteSheetName = typeof _spriteSheetName === "function"
60
- ? _spriteSheetName(this)
61
- : _spriteSheetName;
62
- spriteLib.drawSpriteFrame(context, spriteSheetName, spriteIndex, position, typeof scale === "function" ? scale(this) : scale, mirroring === "horizontal" || mirroring === "both", mirroring === "vertical" || mirroring === "both");
169
+ const mirroring = resolveOption(options.mirroring, null, this);
170
+ const ticksPerFrame = resolveOption(options.ticksPerFrame, 1, this);
171
+ const position = resolveOption(options.overridePosition, this.getPosition(), this);
172
+ const resolvedScale = resolveOption(options.scale, 1, this);
173
+ const resolvedDefinitions = typeof definitions === "function" ? definitions(this) : definitions;
174
+ const frameIndex = Math.floor(gameContext.getTickCount() / ticksPerFrame) %
175
+ resolvedDefinitions.length;
176
+ const definitionName = resolvedDefinitions[frameIndex];
177
+ spriteLib.drawSpriteDefinition(context, definitionName, position, resolvedScale, mirroring === "horizontal" || mirroring === "both", mirroring === "vertical" || mirroring === "both");
63
178
  return original.call(this, canvas, scene);
64
179
  };
65
180
  return descriptor;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GameObject/Decorators/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GameObject/Decorators/index.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ declare class GameObject {
23
23
  private renderFn;
24
24
  private tickFn;
25
25
  private context;
26
+ private didNotifyAddedToScene;
26
27
  hovering?: boolean;
27
28
  private motherShip;
28
29
  walker: Walker | null;
@@ -30,6 +31,7 @@ declare class GameObject {
30
31
  rotation: number;
31
32
  angularVelocity: number;
32
33
  showOriginDebug: boolean;
34
+ zIndex: number;
33
35
  private opacity;
34
36
  private lastDominantDirection;
35
37
  private positionRelativeToMotherShip;
@@ -38,6 +40,10 @@ declare class GameObject {
38
40
  id: string;
39
41
  constructor(name: string, position: Vector, visible?: boolean, active?: boolean, hitboxes?: (CircleHitbox | SquareHitbox)[], scene?: Scene | null, children?: GameObject[], showOriginDebug?: boolean);
40
42
  tick(): void;
43
+ onAddedToScene(_scene: Scene, _context: GameContext): void;
44
+ onRemovedFromScene(_scene: Scene): void;
45
+ notifyAddedToScene(scene: Scene, context: GameContext | null): void;
46
+ notifyRemovedFromScene(scene: Scene): void;
41
47
  /**
42
48
  * Runs when an overlap is detected, before resolution/impulses are applied.
43
49
  * Return `false` to ignore collision handling with `otherGO`.
@@ -80,6 +86,7 @@ declare class GameObject {
80
86
  setContext(context: GameContext | null): void;
81
87
  getContext(): GameContext | null;
82
88
  onMessage<TPayload>(channel: string, handler: MessageHandler<TPayload>): () => void;
89
+ onceOnMessage<TPayload>(channel: string, handler: MessageHandler<TPayload>): () => void;
83
90
  sendMessage<TPayload>(channel: string, payload: TPayload): void;
84
91
  private runKeyTickHandlers;
85
92
  getIntendedNextPosition(): Vector;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/GameObject/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/GameObject/index.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ class GameObject {
19
19
  renderFn = (obj, canvas) => { };
20
20
  tickFn = (obj) => { };
21
21
  context = null;
22
+ didNotifyAddedToScene = false;
22
23
  hovering = false;
23
24
  motherShip = null;
24
25
  walker = null;
@@ -26,6 +27,7 @@ class GameObject {
26
27
  rotation = 0;
27
28
  angularVelocity = 0;
28
29
  showOriginDebug = false;
30
+ zIndex = 0;
29
31
  opacity = 1;
30
32
  lastDominantDirection = "down";
31
33
  positionRelativeToMotherShip = false;
@@ -70,6 +72,22 @@ class GameObject {
70
72
  // this.children.forEach((child) => child.tick());
71
73
  }
72
74
  }
75
+ onAddedToScene(_scene, _context) { }
76
+ onRemovedFromScene(_scene) { }
77
+ notifyAddedToScene(scene, context) {
78
+ if (this.didNotifyAddedToScene || !context) {
79
+ return;
80
+ }
81
+ this.didNotifyAddedToScene = true;
82
+ this.onAddedToScene(scene, context);
83
+ }
84
+ notifyRemovedFromScene(scene) {
85
+ if (!this.didNotifyAddedToScene) {
86
+ return;
87
+ }
88
+ this.didNotifyAddedToScene = false;
89
+ this.onRemovedFromScene(scene);
90
+ }
73
91
  /**
74
92
  * Runs when an overlap is detected, before resolution/impulses are applied.
75
93
  * Return `false` to ignore collision handling with `otherGO`.
@@ -188,8 +206,14 @@ class GameObject {
188
206
  child.scene = this.scene;
189
207
  child.setContext(this.context);
190
208
  this.children.push(child);
209
+ if (this.scene) {
210
+ child.notifyAddedToScene(this.scene, this.context);
211
+ }
191
212
  }
192
213
  removeChild(gameObject) {
214
+ if (this.scene) {
215
+ gameObject.notifyRemovedFromScene(this.scene);
216
+ }
193
217
  this.children = this.children.filter((child) => child !== gameObject);
194
218
  }
195
219
  getDominantDirection() {
@@ -266,7 +290,12 @@ class GameObject {
266
290
  handleEvent(event) { }
267
291
  setContext(context) {
268
292
  this.context = context;
269
- this.children.forEach((child) => child.setContext(context));
293
+ this.children.forEach((child) => {
294
+ child.setContext(context);
295
+ if (this.scene) {
296
+ child.notifyAddedToScene(this.scene, context);
297
+ }
298
+ });
270
299
  }
271
300
  getContext() {
272
301
  return this.context;
@@ -277,6 +306,14 @@ class GameObject {
277
306
  }
278
307
  return this.context.subscribeToMessage(channel, handler);
279
308
  }
309
+ onceOnMessage(channel, handler) {
310
+ let unsubscribe = () => { };
311
+ unsubscribe = this.onMessage(channel, (payload, sender) => {
312
+ unsubscribe();
313
+ handler(payload, sender);
314
+ });
315
+ return unsubscribe;
316
+ }
280
317
  sendMessage(channel, payload) {
281
318
  this.context?.sendMessage(channel, payload, this);
282
319
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/GameObject/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/GameObject/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EACL,iBAAiB,EACjB,OAAO,EACP,cAAc,GACf,MAAM,sBAAsB,CAAC;AAY9B,MAAM,UAAU;IA8BL;IACC;IACD;IACA;IACA;IACA;IACA;IAnCD,QAAQ,GAAG,CAAC,GAAe,EAAE,MAAwB,EAAE,EAAE,GAAE,CAAC,CAAC;IAC7D,MAAM,GAAG,CAAC,GAAe,EAAE,EAAE,GAAE,CAAC,CAAC;IACjC,OAAO,GAAuB,IAAI,CAAC;IACnC,qBAAqB,GAAY,KAAK,CAAC;IACxC,QAAQ,GAAa,KAAK,CAAC;IAC1B,UAAU,GAAsB,IAAI,CAAC;IACtC,MAAM,GAAkB,IAAI,CAAC;IAC7B,KAAK,GAAW,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,QAAQ,GAAW,CAAC,CAAC;IACrB,eAAe,GAAW,CAAC,CAAC;IAC5B,eAAe,GAAY,KAAK,CAAC;IACjC,MAAM,GAAW,CAAC,CAAC;IAClB,OAAO,GAAW,CAAC,CAAC;IACpB,qBAAqB,GAC3B,MAAM,CAAC;IACD,4BAA4B,GAAY,KAAK,CAAC;IAC/C,YAAY,GAAY,KAAK,CAAC;IAE9B,OAAO,GAAgC;QAC5C,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,CAAC;QACd,iBAAiB,EAAE,KAAK;QACxB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,CAAC;KACR,CAAC;IAEK,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAExE,YACS,IAAY,EACX,QAAgB,EACjB,UAAmB,IAAI,EACvB,SAAkB,IAAI,EACtB,WAA4C,EAAE,EAC9C,QAAsB,IAAI,EAC1B,WAAyB,EAAE,EAClC,kBAA2B,KAAK;QAPzB,SAAI,GAAJ,IAAI,CAAQ;QACX,aAAQ,GAAR,QAAQ,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAgB;QACvB,WAAM,GAAN,MAAM,CAAgB;QACtB,aAAQ,GAAR,QAAQ,CAAsC;QAC9C,UAAK,GAAL,KAAK,CAAqB;QAC1B,aAAQ,GAAR,QAAQ,CAAmB;QAGlC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAElB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YAEpB,IACE,IAAI,CAAC,OAAO,CAAC,iBAAiB;gBAC9B,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;gBACvB,CAAC,IAAI,CAAC,YAAY,EAClB,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC;gBACzC,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;YAEtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;YAED,mDAAmD;YACnD,kDAAkD;QACpD,CAAC;IACH,CAAC;IAED,cAAc,CAAC,MAAa,EAAE,QAAqB,IAAS,CAAC;IAE7D,kBAAkB,CAAC,MAAa,IAAS,CAAC;IAE1C,kBAAkB,CAAC,KAAY,EAAE,OAA2B;QAC1D,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,sBAAsB,CAAC,KAAY;QACjC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,OAAmB;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,OAAmB,EAAE,WAAmB,IAAG,CAAC;IAEvD,OAAO;QACL,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,gEAAgE;QAChE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,sDAAsD;QACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,MAAqB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,OAA6C;QACtD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,aAAa,CACX,UAAiB;QAEjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAA+B,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,MAAmC;QAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CACV,cAAc,IAAI,CAAC,IAAI,yBAAyB;gBAC9C,oCAAoC,CACvC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACpC,IAAI,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACpC,IAAI,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACpC,IAAI,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,MAAM,YAAY,YAAY,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChD,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC7C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,MAAwB,EAAE,KAAY;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,MAAM,qBAAqB,GAAG,GAAG,EAAE;YACjC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC/B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClC,MAAM;qBACH,cAAc,EAAE;qBAChB,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACxC,MAAM;qBACH,cAAc,EAAE;qBAChB,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACpD,qBAAqB,EAAE,CAAC;oBACxB,WAAW,EAAE,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACL,OAAO;YACT,CAAC;YAED,qBAAqB,EAAE,CAAC;YACxB,WAAW,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,SAAS,EAAE,CAAC;IACd,CAAC;IAED,cAAc,CAAC,IAAa;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,KAAiB;QACxB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,WAAW,CAAC,UAAsB;QAChC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;IACxE,CAAC;IAED,oBAAoB;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC3C,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC,qBAAqB,CAAC;QAEtE,MAAM,UAAU,GAGX;YACH,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACtC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACrC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACvC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;SACxC,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CACrC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;YACrB,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO,cAAc,GAAG,OAAO,CAAC,KAAK;gBACnC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE;gBAC/C,CAAC,CAAC,OAAO,CAAC;QACd,CAAC,EACD;YACE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;SACxC,CACF,CAAC;QAEF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC;QACtC,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;IACpE,CAAC;IAED,WAAW;QACT,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACpC,CAAC;IAES,mBAAmB;QAC3B,IAAI,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,+BAA+B,CAAC,WAAoB;QAClD,IAAI,CAAC,4BAA4B,GAAG,WAAW,CAAC;IAClD,CAAC;IAED,8BAA8B;QAC5B,OAAO,IAAI,CAAC,4BAA4B,CAAC;IAC3C,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,iBAAiB,CACf,EAAuD;QAEvD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,eAAe,CAAC,EAA6B;QAC3C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAQD,WAAW,CAAC,KAAgB,IAAS,CAAC;IAEtC,UAAU,CAAC,OAA2B;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,SAAS,CACP,OAAe,EACf,OAAiC;QAEjC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,aAAa,CACX,OAAe,EACf,OAAiC;QAEjC,IAAI,WAAW,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;QAEvC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAY,EAAE,MAAM,EAAE,EAAE;YAC7D,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,WAAW,CAAW,OAAe,EAAE,OAAiB;QACtD,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAEO,kBAAkB;QACxB,MAAM,QAAQ,GAAqC,EAAE,CAAC;QAEtD,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAExC,8CAA8C;QAC9C,oDAAoD;QACpD,iBAAiB;QACjB,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,aAAa,GAAI,KAAiC,CACtD,iBAAiB,CAC8B,CAAC;YAClD,IAAI,aAAa,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YAClC,CAAC;YACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,uBAAuB;QACrB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,KAAiB;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;QAErC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;YACtC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBACxC,IACE,UAAU,YAAY,YAAY;oBAClC,WAAW,YAAY,YAAY,EACnC,CAAC;oBACD,OAAO,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC5C,CAAC;gBACD,IACE,UAAU,YAAY,YAAY;oBAClC,WAAW,YAAY,YAAY,EACnC,CAAC;oBACD,OAAO,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,KAAiB;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;QAErC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;YACtC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBACxC,IACE,UAAU,YAAY,YAAY;oBAClC,WAAW,YAAY,YAAY,EACnC,CAAC;oBACD,OAAO,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBACnD,CAAC;gBACD,IACE,UAAU,YAAY,YAAY;oBAClC,WAAW,YAAY,YAAY,EACnC,CAAC;oBACD,OAAO,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAzHC;IANC,OAAO,CAAa,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAClC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,CAAC,CAAC;IACD,cAAc,CAAa,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACzC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC;6CACoC;AA2HxC,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ type AnyFn = (this: any, ...args: any[]) => any;
2
+ export declare const mixin: {
3
+ before: <T>() => <TFn extends AnyFn>(cb: (obj: T, ...args: Parameters<TFn>) => boolean | void) => (_t: Object, _k: string | symbol, descriptor: TypedPropertyDescriptor<TFn>) => TypedPropertyDescriptor<TFn>;
4
+ after: <T>() => <TFn extends AnyFn>(cb: (obj: T, result: ReturnType<TFn>, ...args: Parameters<TFn>) => void | ReturnType<TFn>) => (_t: Object, _k: string | symbol, descriptor: TypedPropertyDescriptor<TFn>) => TypedPropertyDescriptor<TFn>;
5
+ replace: <T>() => <TFn extends AnyFn>(cb: (obj: T, ...args: Parameters<TFn>) => ReturnType<TFn>) => (_t: Object, _k: string | symbol, descriptor: TypedPropertyDescriptor<TFn>) => TypedPropertyDescriptor<TFn>;
6
+ };
7
+ export {};
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Lib/Mixins/index.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAiEhD,eAAO,MAAM,KAAK;aACP,CAAC,QA9DS,GAAG,SAAS,KAAK,4CACa,OAAO,GAAG,IAAI,MAGzD,IAAI,MAAM,EACV,IAAI,MAAM,GAAG,MAAM,EACnB,wCAAwC;YAyDtC,CAAC,QA3CU,GAAG,SAAS,KAAK,iGAQ9B,IAAI,MAAM,EACV,IAAI,MAAM,GAAG,MAAM,EACnB,wCAAwC;cAkCpC,CAAC,QApBQ,GAAG,SAAS,KAAK,iEAI9B,IAAI,MAAM,EACV,IAAI,MAAM,GAAG,MAAM,EACnB,wCAAwC;CAe/C,CAAC"}
@@ -0,0 +1,45 @@
1
+ const _mixin = {
2
+ before() {
3
+ return function (cb) {
4
+ return function (_t, _k, descriptor) {
5
+ const original = descriptor.value;
6
+ descriptor.value = function (...args) {
7
+ const shouldCancel = cb(this, ...args);
8
+ if (shouldCancel === true)
9
+ return undefined;
10
+ return original.apply(this, args);
11
+ };
12
+ return descriptor;
13
+ };
14
+ };
15
+ },
16
+ after() {
17
+ return function (cb) {
18
+ return function (_t, _k, descriptor) {
19
+ const original = descriptor.value;
20
+ descriptor.value = function (...args) {
21
+ const result = original.apply(this, args);
22
+ const newResult = cb(this, result, ...args);
23
+ return (newResult ?? result);
24
+ };
25
+ return descriptor;
26
+ };
27
+ };
28
+ },
29
+ replace() {
30
+ return function (cb) {
31
+ return function (_t, _k, descriptor) {
32
+ descriptor.value = function (...args) {
33
+ return cb(this, ...args);
34
+ };
35
+ return descriptor;
36
+ };
37
+ };
38
+ },
39
+ };
40
+ export const mixin = {
41
+ before: () => _mixin.before(),
42
+ after: () => _mixin.after(),
43
+ replace: () => _mixin.replace(),
44
+ };
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Lib/Mixins/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG;IACb,MAAM;QACJ,OAAO,UACL,EAA2D;YAE3D,OAAO,UACL,EAAU,EACV,EAAmB,EACnB,UAAwC;gBAExC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAM,CAAC;gBACnC,UAAU,CAAC,KAAK,GAAG,UAAsB,GAAG,IAAqB;oBAC/D,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;oBACvC,IAAI,YAAY,KAAK,IAAI;wBAAE,OAAO,SAA4B,CAAC;oBAC/D,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACpC,CAAQ,CAAC;gBACT,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED,KAAK;QACH,OAAO,UACL,EAI2B;YAE3B,OAAO,UACL,EAAU,EACV,EAAmB,EACnB,UAAwC;gBAExC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAM,CAAC;gBACnC,UAAU,CAAC,KAAK,GAAG,UAAsB,GAAG,IAAqB;oBAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAoB,CAAC;oBAC7D,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;oBAC5C,OAAO,CAAC,SAAS,IAAI,MAAM,CAAoB,CAAC;gBAClD,CAAQ,CAAC;gBACT,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,UACL,EAA4D;YAE5D,OAAO,UACL,EAAU,EACV,EAAmB,EACnB,UAAwC;gBAExC,UAAU,CAAC,KAAK,GAAG,UAAsB,GAAG,IAAqB;oBAC/D,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC3B,CAAQ,CAAC;gBACT,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM,EAAE,GAAM,EAAE,CAAC,MAAM,CAAC,MAAM,EAAK;IACnC,KAAK,EAAE,GAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAK;IACjC,OAAO,EAAE,GAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAK;CACtC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from "./Math";
2
2
  export * from "./MinHeap";
3
+ export * from "./Mixins";
3
4
  export * from "./PathfindingProxy";
4
5
  export * from "./Vector";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC"}
package/dist/Lib/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./Math";
2
2
  export * from "./MinHeap";
3
+ export * from "./Mixins";
3
4
  export * from "./PathfindingProxy";
4
5
  export * from "./Vector";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Scenes/SceneManager/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,eAAe,CAAC;AAGvE,cAAM,YAAY;IAad,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IAbtB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,gBAAgB,CAOR;gBAGN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC7B,YAAY,GAAE,KAAK,GAAG,IAAW;IAO3C,IAAI,IAAI,IAAI;IAMZ,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAIpC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUrC,YAAY,IAAI,KAAK,EAAE;IAIvB,eAAe,IAAI,KAAK,EAAE;IAI1B,eAAe,IAAI,KAAK,GAAG,IAAI;IAI/B,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAMrC,kBAAkB,IAAI,KAAK,GAAG,SAAS;IAIvC,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAKjC,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,eAAkC,EAC9C,IAAI,GAAE,SAAS,GAAG,MAAkB,GACnC,OAAO,CAAC,IAAI,CAAC;IA4DhB,OAAO,CAAC,gBAAgB;CAgCzB;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Scenes/SceneManager/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,eAAe,CAAC;AAGvE,cAAM,YAAY;IAad,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IAbtB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,gBAAgB,CAOR;gBAGN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC7B,YAAY,GAAE,KAAK,GAAG,IAAW;IAO3C,IAAI,IAAI,IAAI;IAMZ,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAIpC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBrC,YAAY,IAAI,KAAK,EAAE;IAIvB,eAAe,IAAI,KAAK,EAAE;IAI1B,eAAe,IAAI,KAAK,GAAG,IAAI;IAI/B,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAMrC,kBAAkB,IAAI,KAAK,GAAG,SAAS;IAMvC,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAKjC,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,eAAkC,EAC9C,IAAI,GAAE,SAAS,GAAG,MAAkB,GACnC,OAAO,CAAC,IAAI,CAAC;IA4DhB,OAAO,CAAC,gBAAgB;CAyCzB;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}