@jolly-pixel/engine 2.3.0 → 2.5.0
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/README.md +1 -1
- package/dist/audio/AudioLibrary.d.ts +3 -3
- package/dist/audio/AudioLibrary.d.ts.map +1 -1
- package/dist/audio/AudioLibrary.js.map +1 -1
- package/dist/components/renderers/index.d.ts +3 -6
- package/dist/components/renderers/index.d.ts.map +1 -1
- package/dist/components/renderers/index.js +0 -3
- package/dist/components/renderers/index.js.map +1 -1
- package/dist/components/renderers/model/loader.d.ts +1 -1
- package/dist/components/renderers/model/loader.d.ts.map +1 -1
- package/dist/components/renderers/text/loader.d.ts +1 -1
- package/dist/components/renderers/text/loader.d.ts.map +1 -1
- package/dist/components/script/BehaviorDecorators.d.ts +2 -2
- package/dist/components/script/BehaviorDecorators.d.ts.map +1 -1
- package/dist/components/script/BehaviorDecorators.js.map +1 -1
- package/dist/components/types.d.ts +1 -1
- package/dist/components/types.d.ts.map +1 -1
- package/dist/systems/Logger.d.ts +97 -0
- package/dist/systems/Logger.d.ts.map +1 -0
- package/dist/systems/Logger.js +223 -0
- package/dist/systems/Logger.js.map +1 -0
- package/dist/systems/Scene.d.ts +7 -0
- package/dist/systems/Scene.d.ts.map +1 -1
- package/dist/systems/Scene.js +11 -0
- package/dist/systems/Scene.js.map +1 -1
- package/dist/systems/SceneManager.d.ts.map +1 -1
- package/dist/systems/SceneManager.js +12 -0
- package/dist/systems/SceneManager.js.map +1 -1
- package/dist/systems/World.d.ts +13 -1
- package/dist/systems/World.d.ts.map +1 -1
- package/dist/systems/World.js +20 -0
- package/dist/systems/World.js.map +1 -1
- package/dist/systems/asset/Base.d.ts +7 -5
- package/dist/systems/asset/Base.d.ts.map +1 -1
- package/dist/systems/asset/Base.js.map +1 -1
- package/dist/systems/asset/Manager.d.ts +5 -3
- package/dist/systems/asset/Manager.d.ts.map +1 -1
- package/dist/systems/asset/Manager.js +43 -11
- package/dist/systems/asset/Manager.js.map +1 -1
- package/dist/systems/asset/Registry.d.ts +3 -3
- package/dist/systems/asset/Registry.d.ts.map +1 -1
- package/dist/systems/asset/Registry.js.map +1 -1
- package/dist/systems/index.d.ts +1 -0
- package/dist/systems/index.d.ts.map +1 -1
- package/dist/systems/index.js +1 -0
- package/dist/systems/index.js.map +1 -1
- package/dist/systems/rendering/ThreeRenderer.d.ts.map +1 -1
- package/dist/systems/rendering/ThreeRenderer.js.map +1 -1
- package/dist/ui/UIRenderer.d.ts +1 -0
- package/dist/ui/UIRenderer.d.ts.map +1 -1
- package/dist/ui/UIRenderer.js +2 -4
- package/dist/ui/UIRenderer.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/renderers/tiled/TileLayer.d.ts +0 -13
- package/dist/components/renderers/tiled/TileLayer.d.ts.map +0 -1
- package/dist/components/renderers/tiled/TileLayer.js +0 -34
- package/dist/components/renderers/tiled/TileLayer.js.map +0 -1
- package/dist/components/renderers/tiled/TileMapRenderer.d.ts +0 -15
- package/dist/components/renderers/tiled/TileMapRenderer.d.ts.map +0 -1
- package/dist/components/renderers/tiled/TileMapRenderer.js +0 -59
- package/dist/components/renderers/tiled/TileMapRenderer.js.map +0 -1
- package/dist/components/renderers/tiled/TileObject.d.ts +0 -18
- package/dist/components/renderers/tiled/TileObject.d.ts.map +0 -1
- package/dist/components/renderers/tiled/TileObject.js +0 -59
- package/dist/components/renderers/tiled/TileObject.js.map +0 -1
- package/dist/components/renderers/tiled/TileSet.d.ts +0 -27
- package/dist/components/renderers/tiled/TileSet.d.ts.map +0 -1
- package/dist/components/renderers/tiled/TileSet.js +0 -116
- package/dist/components/renderers/tiled/TileSet.js.map +0 -1
- package/dist/components/renderers/tiled/loader.d.ts +0 -13
- package/dist/components/renderers/tiled/loader.d.ts.map +0 -1
- package/dist/components/renderers/tiled/loader.js +0 -39
- package/dist/components/renderers/tiled/loader.js.map +0 -1
- package/dist/components/renderers/tiled/types.d.ts +0 -325
- package/dist/components/renderers/tiled/types.d.ts.map +0 -1
- package/dist/components/renderers/tiled/types.js +0 -18
- package/dist/components/renderers/tiled/types.js.map +0 -1
package/README.md
CHANGED
|
@@ -200,7 +200,7 @@ Manages sound playback across the engine. It provides a global volume controller
|
|
|
200
200
|
|
|
201
201
|
- [Audio](./docs/audio/audio.md) — global audio controller owning the
|
|
202
202
|
AudioContext and master volume.
|
|
203
|
-
|
|
203
|
+
- [AudioLibrary](./docs/audio/audio-library.md)
|
|
204
204
|
- [AudioBackground](./docs/audio/audio-background.md) —
|
|
205
205
|
playlist-based background music with sequential track playback,
|
|
206
206
|
pause/resume/stop, and playlist chaining.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { LazyAsset } from "../systems/asset/Base.ts";
|
|
2
|
-
export declare class AudioLibrary {
|
|
2
|
+
export declare class AudioLibrary<TKeys extends string = string> {
|
|
3
3
|
#private;
|
|
4
|
-
register(name:
|
|
5
|
-
get(name:
|
|
4
|
+
register(name: TKeys, path: string): LazyAsset<AudioBuffer>;
|
|
5
|
+
get(name: TKeys): AudioBuffer;
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=AudioLibrary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioLibrary.d.ts","sourceRoot":"","sources":["../../src/audio/AudioLibrary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,qBAAa,YAAY;;
|
|
1
|
+
{"version":3,"file":"AudioLibrary.d.ts","sourceRoot":"","sources":["../../src/audio/AudioLibrary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,qBAAa,YAAY,CACvB,KAAK,SAAS,MAAM,GAAG,MAAM;;IAI7B,QAAQ,CACN,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,MAAM,GACX,SAAS,CAAC,WAAW,CAAC;IAOzB,GAAG,CACD,IAAI,EAAE,KAAK,GACV,WAAW;CAQf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioLibrary.js","sourceRoot":"","sources":["../../src/audio/AudioLibrary.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"AudioLibrary.js","sourceRoot":"","sources":["../../src/audio/AudioLibrary.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,MAAM,OAAO,YAAY;IAGvB,OAAO,GAAG,IAAI,GAAG,EAAiC,CAAC;IAEnD,QAAQ,CACN,IAAW,EACX,IAAY;QAEZ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAc,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CACD,IAAW;QAEX,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
export * from "./sprite/SpriteRenderer.class.ts";
|
|
2
|
-
export * from "./tiled/TileMapRenderer.ts";
|
|
3
2
|
export * from "./model/ModelRenderer.ts";
|
|
4
3
|
export * from "./text/TextRenderer.class.ts";
|
|
5
|
-
import { type TiledSetAsset, type TiledMapAsset } from "./tiled/loader.ts";
|
|
6
4
|
import { type Model } from "./model/loader.ts";
|
|
7
5
|
import { type Font } from "./text/loader.ts";
|
|
8
6
|
export declare const Loaders: {
|
|
9
|
-
readonly
|
|
10
|
-
readonly
|
|
11
|
-
readonly font: (assetOrPath: import("../../systems/index.ts").Asset | string) => import("../../systems/index.ts").LazyAsset<Font>;
|
|
7
|
+
readonly model: (assetOrPath: string | import("../../systems/index.ts").Asset<Model, unknown>, options?: unknown) => import("../../systems/index.ts").LazyAsset<Model, unknown>;
|
|
8
|
+
readonly font: (assetOrPath: string | import("../../systems/index.ts").Asset<Font, unknown>, options?: unknown) => import("../../systems/index.ts").LazyAsset<Font, unknown>;
|
|
12
9
|
};
|
|
13
|
-
export type {
|
|
10
|
+
export type { Model, Font };
|
|
14
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAG7C,OAAO,EAEL,KAAK,KAAK,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,OAAO;;;CAGV,CAAC;AAEX,YAAY,EACV,KAAK,EACL,IAAI,EACL,CAAC"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
export * from "./sprite/SpriteRenderer.class.js";
|
|
2
|
-
export * from "./tiled/TileMapRenderer.js";
|
|
3
2
|
export * from "./model/ModelRenderer.js";
|
|
4
3
|
export * from "./text/TextRenderer.class.js";
|
|
5
4
|
// Import Internal Dependencies
|
|
6
|
-
import { tiledMap } from "./tiled/loader.js";
|
|
7
5
|
import { model } from "./model/loader.js";
|
|
8
6
|
import { font } from "./text/loader.js";
|
|
9
7
|
export const Loaders = {
|
|
10
|
-
tiledMap,
|
|
11
8
|
model,
|
|
12
9
|
font
|
|
13
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAE7C,+BAA+B;AAC/B,OAAO,EACL,KAAK,EAEN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,IAAI,EAEL,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,KAAK;IACL,IAAI;CACI,CAAC"}
|
|
@@ -4,5 +4,5 @@ export type Model = {
|
|
|
4
4
|
object: THREE.Group<THREE.Object3DEventMap>;
|
|
5
5
|
animations: THREE.AnimationClip[];
|
|
6
6
|
};
|
|
7
|
-
export declare const model: (assetOrPath:
|
|
7
|
+
export declare const model: (assetOrPath: string | Asset<Model, unknown>, options?: unknown) => import("../../../systems/index.ts").LazyAsset<Model, unknown>;
|
|
8
8
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/model/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EACL,KAAK,EAGN,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC5C,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;CACnC,CAAC;AAqBF,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/model/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EACL,KAAK,EAGN,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC5C,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;CACnC,CAAC;AAqBF,eAAO,MAAM,KAAK,mIAA2B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type Font } from "three/examples/jsm/loaders/FontLoader.js";
|
|
2
|
-
export declare const font: (assetOrPath: import("../../../systems/index.ts").Asset
|
|
2
|
+
export declare const font: (assetOrPath: string | import("../../../systems/index.ts").Asset<Font, unknown>, options?: unknown) => import("../../../systems/index.ts").LazyAsset<Font, unknown>;
|
|
3
3
|
export type { Font };
|
|
4
4
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/text/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,0CAA0C,CAAC;AAoBlD,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/components/renderers/text/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,0CAA0C,CAAC;AAoBlD,eAAO,MAAM,IAAI,qKAA0B,CAAC;AAE5C,YAAY,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
-
import type { ModelRenderer, SpriteRenderer, TextRenderer
|
|
2
|
+
import type { ModelRenderer, SpriteRenderer, TextRenderer } from "../renderers/index.ts";
|
|
3
3
|
import type { ActorComponent } from "../../actor/index.ts";
|
|
4
4
|
export type ScenePropertyType = "string" | "string[]" | "number" | "number[]" | "boolean" | "boolean[]" | "Vector2" | "Vector3" | "Vector4" | "Color";
|
|
5
5
|
export interface ScenePropertyOptions {
|
|
@@ -21,7 +21,7 @@ export declare function SceneProperty(options: ScenePropertyOptions): PropertyDe
|
|
|
21
21
|
export declare namespace SceneProperty {
|
|
22
22
|
var Metadata: symbol;
|
|
23
23
|
}
|
|
24
|
-
export type SceneActorComponentType = typeof ModelRenderer | typeof SpriteRenderer | typeof TextRenderer | typeof
|
|
24
|
+
export type SceneActorComponentType = typeof ModelRenderer | typeof SpriteRenderer | typeof TextRenderer | typeof ActorComponent | any;
|
|
25
25
|
export declare function SceneActorComponent(classObject: SceneActorComponentType): (object: Object, propertyName: BehaviorKey) => void;
|
|
26
26
|
export declare function getBehaviorMetadata(object: Object): BehaviorMetadata | undefined;
|
|
27
27
|
export declare function createBehaviorMetadata(): BehaviorMetadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BehaviorDecorators.d.ts","sourceRoot":"","sources":["../../../src/components/script/BehaviorDecorators.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,YAAY,
|
|
1
|
+
{"version":3,"file":"BehaviorDecorators.d.ts","sourceRoot":"","sources":["../../../src/components/script/BehaviorDecorators.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,WAAW,GACX,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IACvD,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;CACvD,CAAC;AAEF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,iBAAiB,CA8BnB;yBAhCe,aAAa;;;AAmC7B,MAAM,MAAM,uBAAuB,GAC/B,OAAO,aAAa,GACpB,OAAO,cAAc,GACrB,OAAO,YAAY,GACnB,OAAO,cAAc,GACrB,GAAG,CAAC;AAER,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,uBAAuB,IAGlC,QAAQ,MAAM,EACd,cAAc,WAAW,KACxB,IAAI,CAiBR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,GACb,gBAAgB,GAAG,SAAS,CAE9B;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAKzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BehaviorDecorators.js","sourceRoot":"","sources":["../../../src/components/script/BehaviorDecorators.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"BehaviorDecorators.js","sourceRoot":"","sources":["../../../src/components/script/BehaviorDecorators.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,kBAAkB,CAAC;AAyC1B,MAAM,UAAU,aAAa,CAC3B,OAA6B;IAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,OAAO,SAAS,EAAE,CAChB,MAAc,EACd,YAAyB;QAEzB,MAAM,EAAE,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;QAEtE,MAAM,aAAa,GAA6B;YAC9C,IAAI;YACJ,KAAK;YACL,WAAW;SACZ,CAAC;QAEF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC;aACI,CAAC;YACJ,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;YAC1C,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAErD,OAAO,CAAC,cAAc,CACpB,aAAa,CAAC,QAAQ,EACtB,QAAQ,EACR,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AACD,aAAa,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AASxD,MAAM,UAAU,mBAAmB,CACjC,WAAoC;IAEpC,OAAO,SAAS,EAAE,CAChB,MAAc,EACd,YAAyB;QAEzB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;aACI,CAAC;YACJ,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;YAC1C,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAEnD,OAAO,CAAC,cAAc,CACpB,aAAa,CAAC,QAAQ,EACtB,QAAQ,EACR,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc;IAEd,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,UAAU,EAAE,IAAI,GAAG,EAAE;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Actor } from "../actor/Actor.ts";
|
|
2
|
-
export type StrictComponentEnum = "ScriptBehavior" | "Camera" | "VoxelRenderer" | "SpriteRenderer" | "ModelRenderer" | "
|
|
2
|
+
export type StrictComponentEnum = "ScriptBehavior" | "Camera" | "VoxelRenderer" | "SpriteRenderer" | "ModelRenderer" | "TextRenderer";
|
|
3
3
|
export type FreeComponentEnum = StrictComponentEnum | (string & {});
|
|
4
4
|
export interface Component {
|
|
5
5
|
actor: Actor<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,QAAQ,GACR,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,QAAQ,GACR,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEpE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IAEpB,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,OAAO,IAAI,IAAI,CAAC;CACjB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { ConsoleAdapter } from "../adapters/console.ts";
|
|
2
|
+
export type LogLevel = "void" | "trace" | "debug" | "info" | "warn" | "error" | "fatal";
|
|
3
|
+
export declare const kLogLevelValue: Record<LogLevel, number>;
|
|
4
|
+
export interface LoggerOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Minimum severity level to emit. Messages below this level are silently dropped.
|
|
7
|
+
* Default: "info"
|
|
8
|
+
*/
|
|
9
|
+
level?: LogLevel;
|
|
10
|
+
/**
|
|
11
|
+
* Namespace glob patterns to enable. Uses dot-notation with wildcard support:
|
|
12
|
+
* "systems.*" → matches systems, systems.sceneManager, systems.asset.queue, ...
|
|
13
|
+
* "systems.asset.*" → matches systems.asset, systems.asset.registry, ...
|
|
14
|
+
* "*" → matches all namespaces (equivalent to debug mode)
|
|
15
|
+
*
|
|
16
|
+
* Default: [] (nothing is logged)
|
|
17
|
+
*/
|
|
18
|
+
namespaces?: string[];
|
|
19
|
+
/**
|
|
20
|
+
* Output adapter. Defaults to the global `console`.
|
|
21
|
+
*/
|
|
22
|
+
adapter?: ConsoleAdapter;
|
|
23
|
+
}
|
|
24
|
+
export interface LoggerChildOptions {
|
|
25
|
+
namespace: string;
|
|
26
|
+
}
|
|
27
|
+
declare const kPrivateToken: unique symbol;
|
|
28
|
+
interface LoggerPrivateOptions {
|
|
29
|
+
token: typeof kPrivateToken;
|
|
30
|
+
namespace: string;
|
|
31
|
+
root: LoggerState;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Holds the shared mutable state of a logger tree.
|
|
35
|
+
* All child loggers created via `.child()` reference the same LoggerState,
|
|
36
|
+
* so runtime changes to level or namespaces propagate immediately.
|
|
37
|
+
*/
|
|
38
|
+
declare class LoggerState {
|
|
39
|
+
#private;
|
|
40
|
+
level: LogLevel;
|
|
41
|
+
namespaces: string[];
|
|
42
|
+
adapter: ConsoleAdapter;
|
|
43
|
+
constructor(options: LoggerOptions);
|
|
44
|
+
invalidateMatchers(): void;
|
|
45
|
+
isNamespaceEnabled(namespace: string): boolean;
|
|
46
|
+
}
|
|
47
|
+
export declare class Logger {
|
|
48
|
+
#private;
|
|
49
|
+
readonly namespace: string;
|
|
50
|
+
constructor(options?: LoggerOptions);
|
|
51
|
+
constructor(options: LoggerPrivateOptions);
|
|
52
|
+
get level(): LogLevel;
|
|
53
|
+
/**
|
|
54
|
+
* Changes the minimum log level for the entire logger tree.
|
|
55
|
+
* Affects all child loggers immediately since they share the same state.
|
|
56
|
+
*/
|
|
57
|
+
setLevel(level: LogLevel): void;
|
|
58
|
+
/**
|
|
59
|
+
* Adds one or more namespace patterns to the enabled set.
|
|
60
|
+
* Invalidates the matcher cache so new patterns take effect immediately.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* logger.enableNamespace("systems.*", "actor");
|
|
64
|
+
*/
|
|
65
|
+
enableNamespace(...patterns: string[]): void;
|
|
66
|
+
/**
|
|
67
|
+
* Removes one or more namespace patterns from the enabled set.
|
|
68
|
+
*/
|
|
69
|
+
disableNamespace(...patterns: string[]): void;
|
|
70
|
+
/**
|
|
71
|
+
* Returns true if the given level would be emitted given the current minimum level.
|
|
72
|
+
*/
|
|
73
|
+
isLevelEnabled(level: LogLevel): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Returns true if this logger's own namespace is currently enabled.
|
|
76
|
+
*/
|
|
77
|
+
isNamespaceEnabled(): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Creates a child logger whose namespace is appended to this logger's namespace.
|
|
80
|
+
* The child shares the same level, namespace list, and adapter as the root.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* const root = new Logger({ level: "debug", namespaces: ["systems.*"] });
|
|
84
|
+
* const child = root.child({ namespace: "systems.sceneManager" });
|
|
85
|
+
* child.debug("setScene", { scene: "Game" });
|
|
86
|
+
* // → [DEBUG] [systems.sceneManager] setScene
|
|
87
|
+
*/
|
|
88
|
+
child(options: LoggerChildOptions): Logger;
|
|
89
|
+
trace(msg: string, meta?: Record<string, unknown>): void;
|
|
90
|
+
debug(msg: string, meta?: Record<string, unknown>): void;
|
|
91
|
+
info(msg: string, meta?: Record<string, unknown>): void;
|
|
92
|
+
warn(msg: string, meta?: Record<string, unknown>): void;
|
|
93
|
+
error(msg: string, meta?: Record<string, unknown>): void;
|
|
94
|
+
fatal(msg: string, meta?: Record<string, unknown>): void;
|
|
95
|
+
}
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/systems/Logger.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAGxF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQnD,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,QAAA,MAAM,aAAa,eAA0B,CAAC;AAE9C,UAAU,oBAAoB;IAC5B,KAAK,EAAE,OAAO,aAAa,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;;;GAIG;AACH,cAAM,WAAW;;IACf,KAAK,EAAE,QAAQ,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,cAAc,CAAC;gBAKtB,OAAO,EAAE,aAAa;IAaxB,kBAAkB,IAAI,IAAI;IAI1B,kBAAkB,CAChB,SAAS,EAAE,MAAM,GAChB,OAAO;CAsBX;AAED,qBAAa,MAAM;;IAEjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,CAAC,EAAE,aAAa;gBACvB,OAAO,EAAE,oBAAoB;IAYzC,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED;;;OAGG;IACH,QAAQ,CACN,KAAK,EAAE,QAAQ,GACd,IAAI;IAIP;;;;;;OAMG;IACH,eAAe,CACb,GAAG,QAAQ,EAAE,MAAM,EAAE,GACpB,IAAI;IAKP;;OAEG;IACH,gBAAgB,CACd,GAAG,QAAQ,EAAE,MAAM,EAAE,GACpB,IAAI;IAWP;;OAEG;IACH,cAAc,CACZ,KAAK,EAAE,QAAQ,GACd,OAAO;IAIV;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;;;;;;;;OASG;IACH,KAAK,CACH,OAAO,EAAE,kBAAkB,GAC1B,MAAM;IAYT,KAAK,CACH,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAQP,KAAK,CACH,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAQP,IAAI,CACF,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAQP,IAAI,CACF,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAQP,KAAK,CACH,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAQP,KAAK,CACH,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;CAkDR"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
// Import Third-party Dependencies
|
|
2
|
+
import pm from "picomatch";
|
|
3
|
+
// CONSTANTS
|
|
4
|
+
export const kLogLevelValue = {
|
|
5
|
+
void: 0,
|
|
6
|
+
trace: 10,
|
|
7
|
+
debug: 20,
|
|
8
|
+
info: 30,
|
|
9
|
+
warn: 40,
|
|
10
|
+
error: 50,
|
|
11
|
+
fatal: 60
|
|
12
|
+
};
|
|
13
|
+
// CONSTANTS
|
|
14
|
+
const kPrivateToken = Symbol("LoggerPrivate");
|
|
15
|
+
/**
|
|
16
|
+
* Holds the shared mutable state of a logger tree.
|
|
17
|
+
* All child loggers created via `.child()` reference the same LoggerState,
|
|
18
|
+
* so runtime changes to level or namespaces propagate immediately.
|
|
19
|
+
*/
|
|
20
|
+
class LoggerState {
|
|
21
|
+
level;
|
|
22
|
+
namespaces;
|
|
23
|
+
adapter;
|
|
24
|
+
#matchers = new Map();
|
|
25
|
+
constructor(options) {
|
|
26
|
+
const { level = "info", namespaces = [], adapter = console } = options;
|
|
27
|
+
this.level = level;
|
|
28
|
+
this.namespaces = structuredClone(namespaces);
|
|
29
|
+
this.adapter = adapter;
|
|
30
|
+
}
|
|
31
|
+
invalidateMatchers() {
|
|
32
|
+
this.#matchers.clear();
|
|
33
|
+
}
|
|
34
|
+
isNamespaceEnabled(namespace) {
|
|
35
|
+
if (this.namespaces.length === 0) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const normalized = normalizeNamespace(namespace);
|
|
39
|
+
for (const pattern of this.namespaces) {
|
|
40
|
+
let matcher = this.#matchers.get(pattern);
|
|
41
|
+
if (!matcher) {
|
|
42
|
+
matcher = pm(normalizePattern(pattern));
|
|
43
|
+
this.#matchers.set(pattern, matcher);
|
|
44
|
+
}
|
|
45
|
+
if (normalized === "" || matcher(normalized)) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export class Logger {
|
|
53
|
+
#root;
|
|
54
|
+
namespace;
|
|
55
|
+
constructor(options = {}) {
|
|
56
|
+
if ("token" in options && options.token === kPrivateToken) {
|
|
57
|
+
this.namespace = options.namespace;
|
|
58
|
+
this.#root = options.root;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.namespace = "";
|
|
62
|
+
this.#root = new LoggerState(options);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
get level() {
|
|
66
|
+
return this.#root.level;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Changes the minimum log level for the entire logger tree.
|
|
70
|
+
* Affects all child loggers immediately since they share the same state.
|
|
71
|
+
*/
|
|
72
|
+
setLevel(level) {
|
|
73
|
+
this.#root.level = level;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Adds one or more namespace patterns to the enabled set.
|
|
77
|
+
* Invalidates the matcher cache so new patterns take effect immediately.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* logger.enableNamespace("systems.*", "actor");
|
|
81
|
+
*/
|
|
82
|
+
enableNamespace(...patterns) {
|
|
83
|
+
this.#root.namespaces.push(...patterns);
|
|
84
|
+
this.#root.invalidateMatchers();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Removes one or more namespace patterns from the enabled set.
|
|
88
|
+
*/
|
|
89
|
+
disableNamespace(...patterns) {
|
|
90
|
+
for (const pattern of patterns) {
|
|
91
|
+
const index = this.#root.namespaces.indexOf(pattern);
|
|
92
|
+
if (index !== -1) {
|
|
93
|
+
this.#root.namespaces.splice(index, 1);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
this.#root.invalidateMatchers();
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Returns true if the given level would be emitted given the current minimum level.
|
|
100
|
+
*/
|
|
101
|
+
isLevelEnabled(level) {
|
|
102
|
+
return kLogLevelValue[level] >= kLogLevelValue[this.#root.level];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Returns true if this logger's own namespace is currently enabled.
|
|
106
|
+
*/
|
|
107
|
+
isNamespaceEnabled() {
|
|
108
|
+
return this.#root.isNamespaceEnabled(this.namespace);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Creates a child logger whose namespace is appended to this logger's namespace.
|
|
112
|
+
* The child shares the same level, namespace list, and adapter as the root.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* const root = new Logger({ level: "debug", namespaces: ["systems.*"] });
|
|
116
|
+
* const child = root.child({ namespace: "systems.sceneManager" });
|
|
117
|
+
* child.debug("setScene", { scene: "Game" });
|
|
118
|
+
* // → [DEBUG] [systems.sceneManager] setScene
|
|
119
|
+
*/
|
|
120
|
+
child(options) {
|
|
121
|
+
const ns = this.namespace
|
|
122
|
+
? `${this.namespace}.${options.namespace}`
|
|
123
|
+
: options.namespace;
|
|
124
|
+
return new Logger({
|
|
125
|
+
token: kPrivateToken,
|
|
126
|
+
namespace: ns,
|
|
127
|
+
root: this.#root
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
trace(msg, meta) {
|
|
131
|
+
if (this.#root.level === "void") {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
this.#emit("trace", msg, meta);
|
|
135
|
+
}
|
|
136
|
+
debug(msg, meta) {
|
|
137
|
+
if (this.#root.level === "void") {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
this.#emit("debug", msg, meta);
|
|
141
|
+
}
|
|
142
|
+
info(msg, meta) {
|
|
143
|
+
if (this.#root.level === "void") {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
this.#emit("info", msg, meta);
|
|
147
|
+
}
|
|
148
|
+
warn(msg, meta) {
|
|
149
|
+
if (this.#root.level === "void") {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
this.#emit("warn", msg, meta);
|
|
153
|
+
}
|
|
154
|
+
error(msg, meta) {
|
|
155
|
+
if (this.#root.level === "void") {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.#emit("error", msg, meta);
|
|
159
|
+
}
|
|
160
|
+
fatal(msg, meta) {
|
|
161
|
+
if (this.#root.level === "void") {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
this.#emit("fatal", msg, meta);
|
|
165
|
+
}
|
|
166
|
+
#emit(level, msg, meta) {
|
|
167
|
+
if (this.#root.level === "void") {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (!this.isLevelEnabled(level) ||
|
|
171
|
+
!this.isNamespaceEnabled()) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const ns = this.namespace || "root";
|
|
175
|
+
const formatted = `[${level.toUpperCase()}] [${ns}] ${msg}`;
|
|
176
|
+
if (level === "warn") {
|
|
177
|
+
if (meta === undefined) {
|
|
178
|
+
this.#root.adapter.warn(formatted);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
this.#root.adapter.warn(formatted, meta);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else if (level === "error" || level === "fatal") {
|
|
185
|
+
if (meta === undefined) {
|
|
186
|
+
this.#root.adapter.error(formatted);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
this.#root.adapter.error(formatted, meta);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else if (meta === undefined) {
|
|
193
|
+
this.#root.adapter.log(formatted);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
this.#root.adapter.log(formatted, meta);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Converts a dot-notation namespace pattern into a slash-separated glob
|
|
202
|
+
* compatible with picomatch.
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* "systems.*" → "systems/**"
|
|
206
|
+
* "systems.asset.*" → "systems/asset/**"
|
|
207
|
+
* "*" → "**"
|
|
208
|
+
* "systems" → "systems"
|
|
209
|
+
*/
|
|
210
|
+
function normalizePattern(pattern) {
|
|
211
|
+
const normalized = pattern.replaceAll(".", "/");
|
|
212
|
+
if (normalized === "*") {
|
|
213
|
+
return "**";
|
|
214
|
+
}
|
|
215
|
+
if (normalized.endsWith("/*")) {
|
|
216
|
+
return `${normalized.slice(0, -1)}**`;
|
|
217
|
+
}
|
|
218
|
+
return normalized;
|
|
219
|
+
}
|
|
220
|
+
function normalizeNamespace(namespace) {
|
|
221
|
+
return namespace.replaceAll(".", "/");
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=Logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/systems/Logger.ts"],"names":[],"mappings":"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"}
|
package/dist/systems/Scene.d.ts
CHANGED
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
import { EventEmitter } from "@posva/event-emitter";
|
|
2
2
|
import type { World, WorldDefaultContext } from "./World.ts";
|
|
3
3
|
import { IntegerIncrement } from "./generators/IntegerIncrement.ts";
|
|
4
|
+
import type { Logger } from "./Logger.ts";
|
|
4
5
|
export type SceneLifecycleEvents = {
|
|
5
6
|
awake: [];
|
|
6
7
|
start: [];
|
|
7
8
|
destroy: [];
|
|
8
9
|
};
|
|
9
10
|
export declare abstract class Scene<TContext = WorldDefaultContext> extends EventEmitter<SceneLifecycleEvents> {
|
|
11
|
+
#private;
|
|
10
12
|
static readonly Id: IntegerIncrement;
|
|
11
13
|
readonly id: number;
|
|
12
14
|
readonly name: string;
|
|
13
15
|
/** Set by SceneManager when the scene is activated. */
|
|
14
16
|
world: World<any, TContext>;
|
|
15
17
|
constructor(name: string);
|
|
18
|
+
/**
|
|
19
|
+
* A child logger scoped to this scene's namespace (`scenes.<name>`).
|
|
20
|
+
* Created lazily on first access; safe to use from `awake()` onwards.
|
|
21
|
+
*/
|
|
22
|
+
get logger(): Logger;
|
|
16
23
|
/**
|
|
17
24
|
* Called once when the scene is first activated (before the first start/update).
|
|
18
25
|
* Populate actors here.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../src/systems/Scene.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../src/systems/Scene.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,EAAE,CAAC;IACV,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,EAAE,CAAC;CACb,CAAC;AAEF,8BAAsB,KAAK,CACzB,QAAQ,GAAG,mBAAmB,CAC9B,SAAQ,YAAY,CAAC,oBAAoB,CAAC;;IAC1C,MAAM,CAAC,QAAQ,CAAC,EAAE,mBAA0B;IAE5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,uDAAuD;IACvD,KAAK,EAAG,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAIjB,IAAI,EAAE,MAAM;IAMxB;;;OAGG;IACH,IAAI,MAAM,IAAI,MAAM,CAMnB;IAED;;;OAGG;IACH,KAAK,IAAI,IAAI;IAEb;;;OAGG;IACH,KAAK,IAAI,IAAI;IAEb;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAEhC;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAErC;;;;OAIG;IACH,OAAO,IAAI,IAAI;CAChB"}
|
package/dist/systems/Scene.js
CHANGED
|
@@ -8,11 +8,22 @@ export class Scene extends EventEmitter {
|
|
|
8
8
|
name;
|
|
9
9
|
/** Set by SceneManager when the scene is activated. */
|
|
10
10
|
world;
|
|
11
|
+
#logger;
|
|
11
12
|
constructor(name) {
|
|
12
13
|
super();
|
|
13
14
|
this.id = Scene.Id.incr();
|
|
14
15
|
this.name = name;
|
|
15
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* A child logger scoped to this scene's namespace (`scenes.<name>`).
|
|
19
|
+
* Created lazily on first access; safe to use from `awake()` onwards.
|
|
20
|
+
*/
|
|
21
|
+
get logger() {
|
|
22
|
+
this.#logger ??= this.world.logger.child({
|
|
23
|
+
namespace: `Scene.${this.name}`
|
|
24
|
+
});
|
|
25
|
+
return this.#logger;
|
|
26
|
+
}
|
|
16
27
|
/**
|
|
17
28
|
* Called once when the scene is first activated (before the first start/update).
|
|
18
29
|
* Populate actors here.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scene.js","sourceRoot":"","sources":["../../src/systems/Scene.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,kCAAkC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"Scene.js","sourceRoot":"","sources":["../../src/systems/Scene.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,kCAAkC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AASpE,MAAM,OAAgB,KAEpB,SAAQ,YAAkC;IAC1C,MAAM,CAAU,EAAE,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEnC,EAAE,CAAS;IACX,IAAI,CAAS;IAEtB,uDAAuD;IACvD,KAAK,CAAwB;IAE7B,OAAO,CAAqB;IAE5B,YAAY,IAAY;QACtB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACR,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACvC,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE;SAChC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,KAAK,KAAU,CAAC;IAEhB;;;OAGG;IACH,KAAK,KAAU,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,UAAkB,IAAS,CAAC;IAEnC;;OAEG;IACH,WAAW,CAAC,UAAkB,IAAS,CAAC;IAExC;;;;OAIG;IACH,OAAO,KAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneManager.d.ts","sourceRoot":"","sources":["../../src/systems/SceneManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EACL,KAAK,EACL,cAAc,EACd,SAAS,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"SceneManager.d.ts","sourceRoot":"","sources":["../../src/systems/SceneManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export class SceneManager extends EventEmitter {
|
|
|
14
14
|
#pendingScene = null;
|
|
15
15
|
#sceneStartPending = false;
|
|
16
16
|
#world = null;
|
|
17
|
+
#logger;
|
|
17
18
|
#appendedScenes = new Map();
|
|
18
19
|
#appendedScenesPendingStart = new Set();
|
|
19
20
|
tree = new ActorTree({
|
|
@@ -35,6 +36,7 @@ export class SceneManager extends EventEmitter {
|
|
|
35
36
|
}
|
|
36
37
|
bindWorld(world) {
|
|
37
38
|
this.#world = world;
|
|
39
|
+
this.#logger = world.logger.child({ namespace: "Systems.SceneManager" });
|
|
38
40
|
}
|
|
39
41
|
awake() {
|
|
40
42
|
for (const { actor } of this.tree.walk()) {
|
|
@@ -47,6 +49,9 @@ export class SceneManager extends EventEmitter {
|
|
|
47
49
|
}
|
|
48
50
|
setScene(scene) {
|
|
49
51
|
if (this.#currentScene !== null) {
|
|
52
|
+
this.#logger.debug("Tearing down current scene", {
|
|
53
|
+
scene: this.#currentScene.name
|
|
54
|
+
});
|
|
50
55
|
for (const entry of this.#appendedScenes.values()) {
|
|
51
56
|
this.emit("sceneRemoved", entry.scene);
|
|
52
57
|
entry.scene.destroy();
|
|
@@ -65,6 +70,9 @@ export class SceneManager extends EventEmitter {
|
|
|
65
70
|
this.#registeredActors.clear();
|
|
66
71
|
this.#actorsByName.clear();
|
|
67
72
|
}
|
|
73
|
+
this.#logger.info("Scene changed", {
|
|
74
|
+
scene: scene.name
|
|
75
|
+
});
|
|
68
76
|
scene.world = this.#world;
|
|
69
77
|
this.#currentScene = scene;
|
|
70
78
|
scene.awake();
|
|
@@ -81,6 +89,7 @@ export class SceneManager extends EventEmitter {
|
|
|
81
89
|
* All actors created during awake() are tracked and will be destroyed on removeScene().
|
|
82
90
|
*/
|
|
83
91
|
appendScene(scene) {
|
|
92
|
+
this.#logger.debug("Appending scene", { scene: scene.name });
|
|
84
93
|
const snapshot = new Set(this.#registeredActors);
|
|
85
94
|
scene.world = this.#world;
|
|
86
95
|
scene.awake();
|
|
@@ -112,6 +121,9 @@ export class SceneManager extends EventEmitter {
|
|
|
112
121
|
}
|
|
113
122
|
}
|
|
114
123
|
#teardownAppendedScene(id, entry) {
|
|
124
|
+
this.#logger.debug("Removing appended scene", {
|
|
125
|
+
scene: entry.scene.name
|
|
126
|
+
});
|
|
115
127
|
this.emit("sceneRemoved", entry.scene);
|
|
116
128
|
entry.scene.destroy();
|
|
117
129
|
// Destroy only root-level owned actors; destroyActor cascades to children
|