kiwiengine 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -4,10 +4,7 @@ export class GameNode extends EventEmitter {
|
|
|
4
4
|
children = [];
|
|
5
5
|
paused = false;
|
|
6
6
|
timeScale = 1;
|
|
7
|
-
|
|
8
|
-
get worldTimeScale() {
|
|
9
|
-
return this.#worldTimeScale;
|
|
10
|
-
}
|
|
7
|
+
worldTimeScale = 1;
|
|
11
8
|
set parent(parent) {
|
|
12
9
|
this.#parent = parent;
|
|
13
10
|
}
|
|
@@ -58,7 +55,7 @@ export class GameNode extends EventEmitter {
|
|
|
58
55
|
update(dt) {
|
|
59
56
|
if (this.paused)
|
|
60
57
|
return;
|
|
61
|
-
this
|
|
58
|
+
this.worldTimeScale = (this.#parent?.worldTimeScale ?? 1) * this.timeScale;
|
|
62
59
|
const scaledDt = dt * this.timeScale;
|
|
63
60
|
for (const child of this.children) {
|
|
64
61
|
if (!child.paused)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game-node.js","sourceRoot":"","sources":["../../../src/node/core/game-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,MAAM,wBAAwB,CAAA;AAE/D,MAAM,OAAgB,QAAkC,SAAQ,YAE9D;IACA,OAAO,CAAqB;IAClB,QAAQ,GAAyB,EAAE,CAAC;IAC9C,MAAM,GAAG,KAAK,CAAA;IACd,SAAS,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"game-node.js","sourceRoot":"","sources":["../../../src/node/core/game-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,MAAM,wBAAwB,CAAA;AAE/D,MAAM,OAAgB,QAAkC,SAAQ,YAE9D;IACA,OAAO,CAAqB;IAClB,QAAQ,GAAyB,EAAE,CAAC;IAC9C,MAAM,GAAG,KAAK,CAAA;IACd,SAAS,GAAG,CAAC,CAAA;IACH,cAAc,GAAG,CAAC,CAAA;IAE5B,IAAc,MAAM,CAAC,MAAsC;QACzD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,IAAc,MAAM;QAClB,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,GAAG,CAAC,GAAG,QAA8B;QACnC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAE7B,cAAc;YACd,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBACjD,IAAI,GAAG,KAAK,CAAC,CAAC;oBAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACvD,CAAC;YAED,YAAY;YACZ,KAAK,CAAC,MAAM,GAAG,IAAI,CAAA;YACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAEQ,MAAM;QACb,KAAK,CAAC,MAAM,EAAE,CAAA;QAEd,WAAW;QACX,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC/C,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACpD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;QAC1B,CAAC;QAED,WAAW;QACX,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAA;YACxB,KAAK,CAAC,MAAM,EAAE,CAAA;QAChB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IAC1B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,KAAK,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,MAAM,EAAE,CAAA;QAChB,CAAC;IACH,CAAC;IAES,MAAM,CAAC,EAAU;QACzB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QAEvB,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;QAC1E,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAA;QAEpC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3C,CAAC;QAEA,IAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACxC,CAAC;CACF","sourcesContent":["import { EventEmitter, EventMap } from '@webtaku/event-emitter'\n\nexport abstract class GameNode<E extends EventMap = {}> extends EventEmitter<E & {\n update: (dt: number) => void\n}> {\n #parent?: GameNode<EventMap>\n protected children: GameNode<EventMap>[] = [];\n paused = false\n timeScale = 1\n protected worldTimeScale = 1\n\n protected set parent(parent: GameNode<EventMap> | undefined) {\n this.#parent = parent\n }\n\n protected get parent() {\n return this.#parent\n }\n\n add(...children: GameNode<EventMap>[]) {\n for (const child of children) {\n\n // 기존 부모로부터 제거\n if (child.#parent) {\n const idx = child.#parent.children.indexOf(child)\n if (idx !== -1) child.#parent.children.splice(idx, 1)\n }\n\n // 새로운 부모 설정\n child.parent = this\n this.children.push(child)\n }\n }\n\n override remove() {\n super.remove()\n\n // 부모로부터 제거\n if (this.#parent) {\n const idx = this.#parent.children.indexOf(this)\n if (idx !== -1) this.#parent.children.splice(idx, 1)\n this.#parent = undefined\n }\n\n // 자식 노드 제거\n for (const child of this.children) {\n child.parent = undefined\n child.remove()\n }\n this.children.length = 0\n }\n\n pause() {\n this.paused = true\n for (const child of this.children) {\n child.pause()\n }\n }\n\n resume() {\n this.paused = false\n for (const child of this.children) {\n child.resume()\n }\n }\n\n protected update(dt: number) {\n if (this.paused) return\n\n this.worldTimeScale = (this.#parent?.worldTimeScale ?? 1) * this.timeScale\n const scaledDt = dt * this.timeScale\n\n for (const child of this.children) {\n if (!child.paused) child.update(scaledDt)\n }\n\n (this as any).emit('update', scaledDt)\n }\n}\n"]}
|
|
@@ -6,7 +6,7 @@ export declare abstract class GameNode<E extends EventMap = {}> extends EventEmi
|
|
|
6
6
|
protected children: GameNode<EventMap>[];
|
|
7
7
|
paused: boolean;
|
|
8
8
|
timeScale: number;
|
|
9
|
-
|
|
9
|
+
protected worldTimeScale: number;
|
|
10
10
|
protected set parent(parent: GameNode<EventMap> | undefined);
|
|
11
11
|
protected get parent(): GameNode<EventMap> | undefined;
|
|
12
12
|
add(...children: GameNode<EventMap>[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game-node.d.ts","sourceRoot":"","sources":["../../../../src/node/core/game-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAE/D,8BAAsB,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,EAAE,CAAE,SAAQ,YAAY,CAAC,CAAC,GAAG;IAC/E,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B,CAAC;;IAEA,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAM;IAC9C,MAAM,UAAQ;IACd,SAAS,SAAI;
|
|
1
|
+
{"version":3,"file":"game-node.d.ts","sourceRoot":"","sources":["../../../../src/node/core/game-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAE/D,8BAAsB,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,EAAE,CAAE,SAAQ,YAAY,CAAC,CAAC,GAAG;IAC/E,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B,CAAC;;IAEA,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAM;IAC9C,MAAM,UAAQ;IACd,SAAS,SAAI;IACb,SAAS,CAAC,cAAc,SAAI;IAE5B,SAAS,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,EAE1D;IAED,SAAS,KAAK,MAAM,IAJS,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,CAM1D;IAED,GAAG,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAe5B,MAAM;IAkBf,KAAK;IAOL,MAAM;IAON,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM;CAY5B"}
|
package/package.json
CHANGED
|
@@ -7,11 +7,7 @@ export abstract class GameNode<E extends EventMap = {}> extends EventEmitter<E &
|
|
|
7
7
|
protected children: GameNode<EventMap>[] = [];
|
|
8
8
|
paused = false
|
|
9
9
|
timeScale = 1
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
get worldTimeScale() {
|
|
13
|
-
return this.#worldTimeScale
|
|
14
|
-
}
|
|
10
|
+
protected worldTimeScale = 1
|
|
15
11
|
|
|
16
12
|
protected set parent(parent: GameNode<EventMap> | undefined) {
|
|
17
13
|
this.#parent = parent
|
|
@@ -71,7 +67,7 @@ export abstract class GameNode<E extends EventMap = {}> extends EventEmitter<E &
|
|
|
71
67
|
protected update(dt: number) {
|
|
72
68
|
if (this.paused) return
|
|
73
69
|
|
|
74
|
-
this
|
|
70
|
+
this.worldTimeScale = (this.#parent?.worldTimeScale ?? 1) * this.timeScale
|
|
75
71
|
const scaledDt = dt * this.timeScale
|
|
76
72
|
|
|
77
73
|
for (const child of this.children) {
|