@jolly-pixel/engine 1.2.0 → 2.0.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.
Files changed (124) hide show
  1. package/README.md +18 -18
  2. package/dist/actor/Actor.d.ts +27 -17
  3. package/dist/actor/Actor.d.ts.map +1 -1
  4. package/dist/actor/Actor.js +88 -64
  5. package/dist/actor/Actor.js.map +1 -1
  6. package/dist/actor/ActorComponent.d.ts +13 -8
  7. package/dist/actor/ActorComponent.d.ts.map +1 -1
  8. package/dist/actor/ActorComponent.js +15 -11
  9. package/dist/actor/ActorComponent.js.map +1 -1
  10. package/dist/actor/ActorTree.d.ts +20 -19
  11. package/dist/actor/ActorTree.d.ts.map +1 -1
  12. package/dist/actor/ActorTree.js +0 -1
  13. package/dist/actor/ActorTree.js.map +1 -1
  14. package/dist/actor/Transform.d.ts +40 -27
  15. package/dist/actor/Transform.d.ts.map +1 -1
  16. package/dist/actor/Transform.js +150 -68
  17. package/dist/actor/Transform.js.map +1 -1
  18. package/dist/actor/index.d.ts +1 -0
  19. package/dist/actor/index.d.ts.map +1 -1
  20. package/dist/actor/index.js +1 -0
  21. package/dist/actor/index.js.map +1 -1
  22. package/dist/adapters/global.d.ts +3 -3
  23. package/dist/adapters/global.d.ts.map +1 -1
  24. package/dist/adapters/global.js +1 -1
  25. package/dist/adapters/global.js.map +1 -1
  26. package/dist/audio/AudioManager.d.ts +2 -2
  27. package/dist/audio/AudioManager.d.ts.map +1 -1
  28. package/dist/audio/AudioManager.js +2 -2
  29. package/dist/audio/AudioManager.js.map +1 -1
  30. package/dist/components/camera/Camera3DControls.d.ts +1 -1
  31. package/dist/components/camera/Camera3DControls.d.ts.map +1 -1
  32. package/dist/components/camera/Camera3DControls.js +4 -4
  33. package/dist/components/camera/Camera3DControls.js.map +1 -1
  34. package/dist/components/renderers/model/ModelRenderer.d.ts +2 -2
  35. package/dist/components/renderers/model/ModelRenderer.d.ts.map +1 -1
  36. package/dist/components/renderers/model/ModelRenderer.js +2 -2
  37. package/dist/components/renderers/model/ModelRenderer.js.map +1 -1
  38. package/dist/components/renderers/sprite/SpriteRenderer.class.d.ts +2 -2
  39. package/dist/components/renderers/sprite/SpriteRenderer.class.d.ts.map +1 -1
  40. package/dist/components/renderers/sprite/SpriteRenderer.class.js +2 -2
  41. package/dist/components/renderers/sprite/SpriteRenderer.class.js.map +1 -1
  42. package/dist/components/renderers/text/TextRenderer.class.d.ts +2 -2
  43. package/dist/components/renderers/text/TextRenderer.class.d.ts.map +1 -1
  44. package/dist/components/renderers/text/TextRenderer.class.js +3 -3
  45. package/dist/components/renderers/text/TextRenderer.class.js.map +1 -1
  46. package/dist/components/renderers/tiled/TileMapRenderer.d.ts +2 -2
  47. package/dist/components/renderers/tiled/TileMapRenderer.d.ts.map +1 -1
  48. package/dist/components/renderers/tiled/TileMapRenderer.js +2 -2
  49. package/dist/components/renderers/tiled/TileMapRenderer.js.map +1 -1
  50. package/dist/components/renderers/tiled/TileObject.d.ts +1 -1
  51. package/dist/components/renderers/tiled/TileObject.d.ts.map +1 -1
  52. package/dist/components/renderers/tiled/TileObject.js +4 -4
  53. package/dist/components/renderers/tiled/TileObject.js.map +1 -1
  54. package/dist/components/script/Behavior.d.ts +4 -3
  55. package/dist/components/script/Behavior.d.ts.map +1 -1
  56. package/dist/components/script/Behavior.js +0 -1
  57. package/dist/components/script/Behavior.js.map +1 -1
  58. package/dist/components/script/BehaviorInitializer.d.ts +5 -4
  59. package/dist/components/script/BehaviorInitializer.d.ts.map +1 -1
  60. package/dist/components/script/BehaviorInitializer.js +1 -2
  61. package/dist/components/script/BehaviorInitializer.js.map +1 -1
  62. package/dist/components/types.d.ts +1 -1
  63. package/dist/components/types.d.ts.map +1 -1
  64. package/dist/index.d.ts +2 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +2 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/systems/{Scene.d.ts → SceneManager.d.ts} +8 -8
  69. package/dist/systems/SceneManager.d.ts.map +1 -0
  70. package/dist/systems/{Scene.js → SceneManager.js} +4 -4
  71. package/dist/systems/SceneManager.js.map +1 -0
  72. package/dist/systems/{GameInstance.d.ts → World.d.ts} +13 -8
  73. package/dist/systems/World.d.ts.map +1 -0
  74. package/dist/systems/{GameInstance.js → World.js} +11 -9
  75. package/dist/systems/World.js.map +1 -0
  76. package/dist/systems/generators/IntegerIncrement.d.ts +6 -0
  77. package/dist/systems/generators/IntegerIncrement.d.ts.map +1 -0
  78. package/dist/systems/generators/IntegerIncrement.js +10 -0
  79. package/dist/systems/generators/IntegerIncrement.js.map +1 -0
  80. package/dist/systems/generators/PersistentIdIncrement.d.ts +8 -0
  81. package/dist/systems/generators/PersistentIdIncrement.d.ts.map +1 -0
  82. package/dist/systems/generators/PersistentIdIncrement.js +23 -0
  83. package/dist/systems/generators/PersistentIdIncrement.js.map +1 -0
  84. package/dist/systems/index.d.ts +4 -2
  85. package/dist/systems/index.d.ts.map +1 -1
  86. package/dist/systems/index.js +4 -2
  87. package/dist/systems/index.js.map +1 -1
  88. package/dist/systems/rendering/ThreeRenderer.d.ts +3 -3
  89. package/dist/systems/rendering/ThreeRenderer.d.ts.map +1 -1
  90. package/dist/systems/rendering/ThreeRenderer.js.map +1 -1
  91. package/dist/{utils/types.d.ts → types.d.ts} +1 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js.map +1 -0
  94. package/dist/ui/UINode.d.ts +3 -2
  95. package/dist/ui/UINode.d.ts.map +1 -1
  96. package/dist/ui/UINode.js +6 -6
  97. package/dist/ui/UINode.js.map +1 -1
  98. package/dist/ui/UIRenderer.d.ts +6 -6
  99. package/dist/ui/UIRenderer.d.ts.map +1 -1
  100. package/dist/ui/UIRenderer.js +16 -17
  101. package/dist/ui/UIRenderer.js.map +1 -1
  102. package/dist/ui/UISprite.d.ts +3 -2
  103. package/dist/ui/UISprite.d.ts.map +1 -1
  104. package/dist/ui/UISprite.js +2 -3
  105. package/dist/ui/UISprite.js.map +1 -1
  106. package/dist/ui/UIText.d.ts +4 -3
  107. package/dist/ui/UIText.d.ts.map +1 -1
  108. package/dist/ui/UIText.js.map +1 -1
  109. package/dist/ui/common.d.ts +2 -0
  110. package/dist/ui/common.d.ts.map +1 -0
  111. package/dist/ui/common.js +2 -0
  112. package/dist/ui/common.js.map +1 -0
  113. package/dist/utils/createViewHelper.d.ts +1 -1
  114. package/dist/utils/createViewHelper.d.ts.map +1 -1
  115. package/dist/utils/createViewHelper.js +4 -4
  116. package/dist/utils/createViewHelper.js.map +1 -1
  117. package/package.json +5 -3
  118. package/dist/systems/GameInstance.d.ts.map +0 -1
  119. package/dist/systems/GameInstance.js.map +0 -1
  120. package/dist/systems/Scene.d.ts.map +0 -1
  121. package/dist/systems/Scene.js.map +0 -1
  122. package/dist/utils/types.d.ts.map +0 -1
  123. package/dist/utils/types.js.map +0 -1
  124. /package/dist/{utils/types.js → types.js} +0 -0
@@ -1,32 +1,37 @@
1
1
  import * as THREE from "three";
2
2
  import { type Renderer } from "./rendering/index.ts";
3
3
  import { Actor, type ActorOptions } from "../actor/index.ts";
4
- import { type Scene } from "./Scene.ts";
4
+ import { type SceneContract } from "./SceneManager.ts";
5
5
  import { Input } from "../controls/Input.class.ts";
6
6
  import { GlobalAudio } from "../audio/GlobalAudio.ts";
7
7
  import { type WindowAdapter } from "../adapters/window.ts";
8
8
  import { type GlobalsAdapter } from "../adapters/global.ts";
9
- export interface GameInstanceOptions {
9
+ export interface WorldOptions<TContext = WorldDefaultContext> {
10
10
  enableOnExit?: boolean;
11
- scene: Scene;
11
+ sceneManager: SceneContract;
12
12
  input?: Input;
13
13
  audio?: GlobalAudio;
14
+ context?: TContext;
14
15
  windowAdapter?: WindowAdapter;
15
16
  globalsAdapter?: GlobalsAdapter;
16
17
  }
17
- export declare class GameInstance<T = THREE.WebGLRenderer> {
18
+ export interface WorldDefaultContext {
19
+ [key: string]: unknown;
20
+ }
21
+ export declare class World<T = THREE.WebGLRenderer, TContext = WorldDefaultContext> {
18
22
  #private;
19
23
  renderer: Renderer<T>;
20
24
  input: Input;
21
25
  loadingManager: THREE.LoadingManager;
22
- scene: Scene;
26
+ sceneManager: SceneContract;
23
27
  audio: GlobalAudio;
24
- constructor(renderer: Renderer<T>, options: GameInstanceOptions);
28
+ context: TContext;
29
+ constructor(renderer: Renderer<T>, options: WorldOptions<TContext>);
25
30
  setLoadingManager(manager: THREE.LoadingManager): this;
26
- createActor(name: string, options: Omit<ActorOptions, "name">): Actor;
31
+ createActor(name: string, options?: Omit<ActorOptions<TContext>, "name">): Actor<TContext>;
27
32
  connect(): this;
28
33
  disconnect(): this;
29
34
  update(deltaTime: number): boolean;
30
35
  render(): void;
31
36
  }
32
- //# sourceMappingURL=GameInstance.d.ts.map
37
+ //# sourceMappingURL=World.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"World.d.ts","sourceRoot":"","sources":["../../src/systems/World.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,EACL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,YAAY,CAC3B,QAAQ,GAAG,mBAAmB;IAE9B,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,YAAY,EAAE,aAAa,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,QAAQ,CAAC;IAEnB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,KAAK,CAChB,CAAC,GAAG,KAAK,CAAC,aAAa,EACvB,QAAQ,GAAG,mBAAmB;;IAE9B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,KAAK,CAAC,cAAc,CAA8B;IAClE,YAAY,EAAE,aAAa,CAAC;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,QAAQ,CAAC;gBAKhB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC;IAqBjC,iBAAiB,CACf,OAAO,EAAE,KAAK,CAAC,cAAc;IAO/B,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAM,GACjD,KAAK,CAAC,QAAQ,CAAC;IAOlB,OAAO;IAQP,UAAU;IAOV,MAAM,CACJ,SAAS,EAAE,MAAM,GAChB,OAAO;IAaV,MAAM;CAGP"}
@@ -3,24 +3,26 @@ import * as THREE from "three";
3
3
  // Import Internal Dependencies
4
4
  import {} from "./rendering/index.js";
5
5
  import { Actor } from "../actor/index.js";
6
- import {} from "./Scene.js";
6
+ import {} from "./SceneManager.js";
7
7
  import { Input } from "../controls/Input.class.js";
8
8
  import { GlobalAudio } from "../audio/GlobalAudio.js";
9
9
  import { BrowserWindowAdapter } from "../adapters/window.js";
10
10
  import { BrowserGlobalsAdapter } from "../adapters/global.js";
11
- export class GameInstance {
11
+ export class World {
12
12
  renderer;
13
13
  input;
14
14
  loadingManager = new THREE.LoadingManager();
15
- scene;
15
+ sceneManager;
16
16
  audio;
17
+ context;
17
18
  #windowAdapter;
18
19
  constructor(renderer, options) {
19
- const { scene, input = new Input(renderer.canvas, { enableOnExit: options.enableOnExit ?? false }), audio = new GlobalAudio(), windowAdapter = new BrowserWindowAdapter(), globalsAdapter = new BrowserGlobalsAdapter() } = options;
20
+ const { sceneManager, input = new Input(renderer.canvas, { enableOnExit: options.enableOnExit ?? false }), audio = new GlobalAudio(), context = Object.create(null), windowAdapter = new BrowserWindowAdapter(), globalsAdapter = new BrowserGlobalsAdapter() } = options;
20
21
  this.renderer = renderer;
21
- this.scene = scene;
22
+ this.sceneManager = sceneManager;
22
23
  this.input = input;
23
24
  this.audio = audio;
25
+ this.context = context;
24
26
  this.#windowAdapter = windowAdapter;
25
27
  globalsAdapter.setGame(this);
26
28
  }
@@ -28,7 +30,7 @@ export class GameInstance {
28
30
  this.loadingManager = manager;
29
31
  return this;
30
32
  }
31
- createActor(name, options) {
33
+ createActor(name, options = {}) {
32
34
  return new Actor(this, {
33
35
  name,
34
36
  ...options
@@ -37,7 +39,7 @@ export class GameInstance {
37
39
  connect() {
38
40
  this.input.connect();
39
41
  this.#windowAdapter.addEventListener("resize", this.renderer.resize);
40
- this.scene.awake();
42
+ this.sceneManager.awake();
41
43
  return this;
42
44
  }
43
45
  disconnect() {
@@ -47,7 +49,7 @@ export class GameInstance {
47
49
  }
48
50
  update(deltaTime) {
49
51
  this.input.update();
50
- this.scene.update(deltaTime);
52
+ this.sceneManager.update(deltaTime);
51
53
  if (this.input.exited) {
52
54
  this.renderer.clear();
53
55
  return true;
@@ -58,4 +60,4 @@ export class GameInstance {
58
60
  this.renderer.draw();
59
61
  }
60
62
  }
61
- //# sourceMappingURL=GameInstance.js.map
63
+ //# sourceMappingURL=World.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"World.js","sourceRoot":"","sources":["../../src/systems/World.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare class IntegerIncrement {
2
+ #private;
3
+ incr(): number;
4
+ clear(): void;
5
+ }
6
+ //# sourceMappingURL=IntegerIncrement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegerIncrement.d.ts","sourceRoot":"","sources":["../../../src/systems/generators/IntegerIncrement.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;;IAG3B,IAAI,IAAI,MAAM;IAId,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,10 @@
1
+ export class IntegerIncrement {
2
+ #value = 0;
3
+ incr() {
4
+ return this.#value++;
5
+ }
6
+ clear() {
7
+ this.#value = 0;
8
+ }
9
+ }
10
+ //# sourceMappingURL=IntegerIncrement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegerIncrement.js","sourceRoot":"","sources":["../../../src/systems/generators/IntegerIncrement.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAgB;IAC3B,MAAM,GAAG,CAAC,CAAC;IAEX,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export declare class PersistentIdIncrement {
2
+ #private;
3
+ next(): string;
4
+ has(id: string): boolean;
5
+ clear(): void;
6
+ static randomId(): string;
7
+ }
8
+ //# sourceMappingURL=PersistentIdIncrement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistentIdIncrement.d.ts","sourceRoot":"","sources":["../../../src/systems/generators/PersistentIdIncrement.ts"],"names":[],"mappings":"AAAA,qBAAa,qBAAqB;;IAGhC,IAAI,IAAI,MAAM;IAYd,GAAG,CACD,EAAE,EAAE,MAAM,GACT,OAAO;IAIV,KAAK,IAAI,IAAI;IAIb,MAAM,CAAC,QAAQ,IAAI,MAAM;CAM1B"}
@@ -0,0 +1,23 @@
1
+ export class PersistentIdIncrement {
2
+ #ids = new Set();
3
+ next() {
4
+ let id;
5
+ do {
6
+ id = PersistentIdIncrement.randomId();
7
+ } while (this.#ids.has(id));
8
+ this.#ids.add(id);
9
+ return id;
10
+ }
11
+ has(id) {
12
+ return this.#ids.has(id);
13
+ }
14
+ clear() {
15
+ this.#ids.clear();
16
+ }
17
+ static randomId() {
18
+ const bytes = new Uint8Array(8);
19
+ crypto.getRandomValues(bytes);
20
+ return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
21
+ }
22
+ }
23
+ //# sourceMappingURL=PersistentIdIncrement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistentIdIncrement.js","sourceRoot":"","sources":["../../../src/systems/generators/PersistentIdIncrement.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,qBAAqB;IAChC,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzB,IAAI;QACF,IAAI,EAAU,CAAC;QACf,GAAG,CAAC;YACF,EAAE,GAAG,qBAAqB,CAAC,QAAQ,EAAE,CAAC;QACxC,CAAC,QACM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAE1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAElB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,GAAG,CACD,EAAU;QAEV,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,QAAQ;QACb,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;CACF"}
@@ -1,10 +1,12 @@
1
1
  import { AssetManager, type AssetOnProgressCallback } from "./asset/Manager.ts";
2
2
  export * from "./asset/Base.ts";
3
3
  export type { AssetLoaderCallback, AssetLoaderContext, AssetLoaderOptions } from "./asset/Registry.ts";
4
- export * from "./GameInstance.ts";
4
+ export * from "./World.ts";
5
5
  export * from "./FixedTimeStep.ts";
6
6
  export * from "./rendering/index.ts";
7
- export * from "./Scene.ts";
7
+ export * from "./SceneManager.ts";
8
+ export * from "./generators/IntegerIncrement.ts";
9
+ export * from "./generators/PersistentIdIncrement.ts";
8
10
  export type { AssetOnProgressCallback };
9
11
  export declare const Assets: AssetManager;
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/systems/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,cAAc,iBAAiB,CAAC;AAChC,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAE3B,YAAY,EACV,uBAAuB,EACxB,CAAC;AAEF,eAAO,MAAM,MAAM,cAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/systems/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,cAAc,iBAAiB,CAAC;AAChC,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AAEtD,YAAY,EACV,uBAAuB,EACxB,CAAC;AAEF,eAAO,MAAM,MAAM,cAAqB,CAAC"}
@@ -1,9 +1,11 @@
1
1
  // Import Internal Dependencies
2
2
  import { AssetManager } from "./asset/Manager.js";
3
3
  export * from "./asset/Base.js";
4
- export * from "./GameInstance.js";
4
+ export * from "./World.js";
5
5
  export * from "./FixedTimeStep.js";
6
6
  export * from "./rendering/index.js";
7
- export * from "./Scene.js";
7
+ export * from "./SceneManager.js";
8
+ export * from "./generators/IntegerIncrement.js";
9
+ export * from "./generators/PersistentIdIncrement.js";
8
10
  export const Assets = new AssetManager();
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/systems/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EACL,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAE5B,cAAc,iBAAiB,CAAC;AAOhC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAM3B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/systems/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EACL,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAE5B,cAAc,iBAAiB,CAAC;AAOhC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uCAAuC,CAAC;AAMtD,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC"}
@@ -2,7 +2,7 @@ import * as THREE from "three";
2
2
  import { type Pass } from "three/addons/postprocessing/EffectComposer.js";
3
3
  import { EventEmitter } from "@posva/event-emitter";
4
4
  import type { Renderer, RenderComponent, RendererEvents } from "./Renderer.ts";
5
- import type { Scene } from "../Scene.ts";
5
+ import type { SceneContract } from "../SceneManager.ts";
6
6
  import { type RenderMode, type RenderStrategy } from "./RenderStrategy.ts";
7
7
  export type ThreeRendererEvents = RendererEvents;
8
8
  export interface ThreeRendererOptions {
@@ -10,14 +10,14 @@ export interface ThreeRendererOptions {
10
10
  * @default "direct"
11
11
  */
12
12
  renderMode: RenderMode;
13
- scene: Scene;
13
+ scene: SceneContract;
14
14
  }
15
15
  export declare class ThreeRenderer extends EventEmitter<ThreeRendererEvents> implements Renderer {
16
16
  webGLRenderer: THREE.WebGLRenderer;
17
17
  renderComponents: RenderComponent[];
18
18
  renderStrategy: RenderStrategy;
19
19
  ratio: number | null;
20
- scene: Scene;
20
+ scene: SceneContract;
21
21
  constructor(canvas: HTMLCanvasElement, options: ThreeRendererOptions);
22
22
  get canvas(): HTMLCanvasElement;
23
23
  getSource(): THREE.WebGLRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"ThreeRenderer.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/ThreeRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAkB,KAAK,IAAI,EAAE,MAAM,+CAA+C,CAAC;AAE1F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;CACd;AAED,qBAAa,aAAc,SAAQ,YAAY,CAC7C,mBAAmB,CACnB,YAAW,QAAQ;IACnB,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;IACnC,gBAAgB,EAAE,eAAe,EAAE,CAAM;IACzC,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5B,KAAK,EAAE,KAAK,CAAC;gBAGX,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,oBAAoB;IAU/B,IAAI,MAAM,sBAET;IAED,SAAS;IAIT,kBAAkB,CAChB,SAAS,EAAE,eAAe,GACzB,IAAI;IAQP,qBAAqB,CACnB,SAAS,EAAE,eAAe,GACzB,IAAI;IAeP,aAAa,CACX,IAAI,EAAE,UAAU,GACf,IAAI;IAuBP,UAAU,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI;IAUpC,QAAQ,CACN,KAAK,GAAE,MAAM,GAAG,IAAW;IAa7B,MAAM,aA4CJ;IAEF,IAAI;IAWJ,MAAM,CACJ,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;KAAE,KAAK,IAAI;IAK7D,KAAK;CAGN"}
1
+ {"version":3,"file":"ThreeRenderer.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/ThreeRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAkB,KAAK,IAAI,EAAE,MAAM,+CAA+C,CAAC;AAE1F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,qBAAa,aAAc,SAAQ,YAAY,CAC7C,mBAAmB,CACnB,YAAW,QAAQ;IACnB,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;IACnC,gBAAgB,EAAE,eAAe,EAAE,CAAM;IACzC,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5B,KAAK,EAAE,aAAa,CAAC;gBAGnB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,oBAAoB;IAU/B,IAAI,MAAM,sBAET;IAED,SAAS;IAIT,kBAAkB,CAChB,SAAS,EAAE,eAAe,GACzB,IAAI;IAQP,qBAAqB,CACnB,SAAS,EAAE,eAAe,GACzB,IAAI;IAeP,aAAa,CACX,IAAI,EAAE,UAAU,GACf,IAAI;IAuBP,UAAU,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI;IAUpC,QAAQ,CACN,KAAK,GAAE,MAAM,GAAG,IAAW;IAa7B,MAAM,aA4CJ;IAEF,IAAI;IAWJ,MAAM,CACJ,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;KAAE,KAAK,IAAI;IAK7D,KAAK;CAGN"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreeRenderer.js","sourceRoot":"","sources":["../../../src/systems/rendering/ThreeRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ThreeRenderer.js","sourceRoot":"","sources":["../../../src/systems/rendering/ThreeRenderer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export type DeepRequired<T> = Required<{
2
2
  [K in keyof T]: T[K] extends Required<T[K]> ? T[K] : DeepRequired<T[K]>;
3
3
  }>;
4
+ export type NonEmptyArray<T> = [T, ...T[]];
4
5
  //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,QAAQ,CAAC;KACpC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACxE,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  import * as THREE from "three";
2
+ import type { WorldDefaultContext } from "../systems/World.ts";
2
3
  import { type Actor, ActorComponent } from "../actor/index.ts";
3
4
  export type UIAnchorX = "left" | "center" | "right";
4
5
  export type UIAnchorY = "top" | "center" | "bottom";
@@ -32,9 +33,9 @@ export interface UINodeOptions extends UINodePositionalOptions {
32
33
  y?: number;
33
34
  };
34
35
  }
35
- export declare class UINode extends ActorComponent {
36
+ export declare class UINode<TContext = WorldDefaultContext> extends ActorComponent<TContext> {
36
37
  #private;
37
- constructor(actor: Actor, options?: UINodeOptions);
38
+ constructor(actor: Actor<TContext>, options?: UINodeOptions);
38
39
  get size(): {
39
40
  width: number;
40
41
  height: number;
@@ -1 +1 @@
1
- {"version":3,"file":"UINode.d.ts","sourceRoot":"","sources":["../../src/ui/UINode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,KAAK,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG/D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAkBpD,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE;QACP,CAAC,CAAC,EAAE,SAAS,CAAC;QACd,CAAC,CAAC,EAAE,SAAS,CAAC;KACf,CAAC;IACF,MAAM,CAAC,EAAE;QACP,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,uBAAuB;IAC5D;;;OAGG;IACH,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF;;;;;OAKG;IACH,KAAK,CAAC,EAAE;QACN,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,qBAAa,MAAO,SAAQ,cAAc;;gBAItC,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,aAAkB;IAiB7B,IAAI,IAAI;;;MAKP;IAED,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,CAK7B;IAED,WAAW,CACT,MAAM,EAAE,KAAK,CAAC,QAAQ,GACrB,IAAI;IAIP,qBAAqB,IAAI,IAAI;CAoE9B"}
1
+ {"version":3,"file":"UINode.d.ts","sourceRoot":"","sources":["../../src/ui/UINode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,KAAK,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG/D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAkBpD,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE;QACP,CAAC,CAAC,EAAE,SAAS,CAAC;QACd,CAAC,CAAC,EAAE,SAAS,CAAC;KACf,CAAC;IACF,MAAM,CAAC,EAAE;QACP,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,uBAAuB;IAC5D;;;OAGG;IACH,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF;;;;;OAKG;IACH,KAAK,CAAC,EAAE;QACN,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,qBAAa,MAAM,CAAC,QAAQ,GAAG,mBAAmB,CAAE,SAAQ,cAAc,CAAC,QAAQ,CAAC;;gBAIhF,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,EACtB,OAAO,GAAE,aAAkB;IAmB7B,IAAI,IAAI;;;MAKP;IAED,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,CAK7B;IAED,WAAW,CACT,MAAM,EAAE,KAAK,CAAC,QAAQ,GACrB,IAAI;IAIP,qBAAqB,IAAI,IAAI;CAoE9B"}
package/dist/ui/UINode.js CHANGED
@@ -1,19 +1,19 @@
1
1
  // Import Third-party Dependencies
2
2
  import * as THREE from "three";
3
- // Import Internal Dependencies
4
3
  import { ActorComponent } from "../actor/index.js";
4
+ import { UIRendererID } from "./common.js";
5
5
  export class UINode extends ActorComponent {
6
6
  #options;
7
7
  constructor(actor, options = {}) {
8
8
  super({ actor, typeName: "UINode" });
9
9
  this.#options = options;
10
- const uiRenderer = this.actor.gameInstance[Symbol.for("UIRenderer")];
10
+ const uiRenderer = this.actor.world[UIRendererID];
11
11
  if (uiRenderer) {
12
12
  uiRenderer.addChildren(this);
13
13
  }
14
14
  else {
15
15
  this.updateToWorldPosition();
16
- this.actor.gameInstance.renderer.on("resize", this.updateToWorldPosition.bind(this));
16
+ this.actor.world.renderer.on("resize", this.updateToWorldPosition.bind(this));
17
17
  }
18
18
  }
19
19
  get size() {
@@ -29,11 +29,11 @@ export class UINode extends ActorComponent {
29
29
  };
30
30
  }
31
31
  addChildren(object) {
32
- this.actor.threeObject.add(object);
32
+ this.actor.object3D.add(object);
33
33
  }
34
34
  updateToWorldPosition() {
35
35
  const { offset = { x: 0, y: 0 }, anchor = { x: "center", y: "center" } } = this.#options;
36
- const screenBounds = this.actor.gameInstance.input.getScreenBounds();
36
+ const screenBounds = this.actor.world.input.getScreenBounds();
37
37
  const { width, height } = this.size;
38
38
  const pivot = this.pivot;
39
39
  const x = this.#computeX({
@@ -50,7 +50,7 @@ export class UINode extends ActorComponent {
50
50
  height,
51
51
  pivotY: pivot.y
52
52
  });
53
- this.actor.threeObject.position.set(x, y, 0);
53
+ this.actor.object3D.position.set(x, y, 0);
54
54
  }
55
55
  #computeX(params) {
56
56
  const { anchor, bounds, offset, width, pivotX } = params;
@@ -1 +1 @@
1
- {"version":3,"file":"UINode.js","sourceRoot":"","sources":["../../src/ui/UINode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UINode.js","sourceRoot":"","sources":["../../src/ui/UINode.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,18 @@
1
1
  import * as THREE from "three";
2
- import { type Actor, ActorComponent } from "../actor/index.ts";
2
+ import type { WorldDefaultContext } from "../systems/World.ts";
3
3
  import type { UINode } from "./UINode.ts";
4
+ import { type Actor, ActorComponent } from "../actor/index.ts";
4
5
  export interface UIRendererOptions {
5
6
  near?: number;
6
7
  far?: number;
7
8
  zIndex?: number;
8
9
  }
9
- export declare class UIRenderer extends ActorComponent {
10
+ export declare class UIRenderer<TContext = WorldDefaultContext> extends ActorComponent<TContext> {
10
11
  #private;
11
- static ID: symbol;
12
12
  camera: THREE.OrthographicCamera;
13
- nodes: UINode[];
14
- constructor(actor: Actor, options?: UIRendererOptions);
15
- addChildren(node: UINode): void;
13
+ nodes: UINode<TContext>[];
14
+ constructor(actor: Actor<TContext>, options?: UIRendererOptions);
15
+ addChildren(node: UINode<TContext>): void;
16
16
  updateWorldPosition(): void;
17
17
  clear(): void;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UIRenderer.d.ts","sourceRoot":"","sources":["../../src/ui/UIRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,KAAK,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAK1C,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,UAAW,SAAQ,cAAc;;IAC5C,MAAM,CAAC,EAAE,SAA4B;IAErC,MAAM,EAAE,KAAK,CAAC,kBAAkB,CAAC;IACjC,KAAK,EAAE,MAAM,EAAE,CAAM;gBAOnB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,iBAAsB;IAiDjC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU/B,mBAAmB,IAAI,IAAI;IAmB3B,KAAK,IAAI,IAAI;CAed"}
1
+ {"version":3,"file":"UIRenderer.d.ts","sourceRoot":"","sources":["../../src/ui/UIRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAM/D,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,UAAU,CACrB,QAAQ,GAAG,mBAAmB,CAC9B,SAAQ,cAAc,CAAC,QAAQ,CAAC;;IAChC,MAAM,EAAE,KAAK,CAAC,kBAAkB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAM;gBAO7B,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,EACtB,OAAO,GAAE,iBAAsB;IAiDjC,WAAW,CACT,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,GACrB,IAAI;IAUP,mBAAmB,IAAI,IAAI;IAmB3B,KAAK,IAAI,IAAI;CAed"}
@@ -1,12 +1,11 @@
1
1
  // Import Third-party Dependencies
2
2
  import * as THREE from "three";
3
3
  import { CSS2DRenderer as ThreeCSS2DRenderer } from "three/addons/renderers/CSS2DRenderer.js";
4
- // Import Internal Dependencies
5
4
  import { ActorComponent } from "../actor/index.js";
5
+ import { UIRendererID } from "./common.js";
6
6
  // CONSTANTS
7
7
  const kOrthographicCameraZIndex = 10;
8
8
  export class UIRenderer extends ActorComponent {
9
- static ID = Symbol.for("UIRenderer");
10
9
  camera;
11
10
  nodes = [];
12
11
  #cssRenderer;
@@ -15,26 +14,26 @@ export class UIRenderer extends ActorComponent {
15
14
  constructor(actor, options = {}) {
16
15
  super({ actor, typeName: "UIRenderer" });
17
16
  const { near = 0.1, far = 2000, zIndex = kOrthographicCameraZIndex } = options;
18
- const { gameInstance } = actor;
19
- const screenBounds = gameInstance.input.getScreenBounds();
17
+ const { world } = actor;
18
+ const screenBounds = world.input.getScreenBounds();
20
19
  this.camera = new THREE.OrthographicCamera(screenBounds.left, screenBounds.right, screenBounds.top, screenBounds.bottom, near, far);
21
20
  this.camera.position.z = zIndex;
22
- this.actor.threeObject.add(this.camera);
21
+ this.actor.object3D.add(this.camera);
23
22
  this.#cssRenderer = new ThreeCSS2DRenderer();
24
23
  this.#cssRenderer.domElement.style.position = "absolute";
25
24
  this.#cssRenderer.domElement.style.top = "0";
26
25
  this.#cssRenderer.domElement.style.left = "0";
27
26
  this.#cssRenderer.domElement.style.pointerEvents = "none";
28
- const canvas = gameInstance.renderer.canvas;
27
+ const canvas = world.renderer.canvas;
29
28
  canvas.parentElement?.appendChild(this.#cssRenderer.domElement);
30
29
  const { width, height } = canvas.getBoundingClientRect();
31
30
  this.#cssRenderer.setSize(width, height);
32
- gameInstance.renderer.addRenderComponent(this.camera);
31
+ world.renderer.addRenderComponent(this.camera);
33
32
  this.#boundResize = this.#onResize.bind(this);
34
33
  this.#boundDraw = this.#onDraw.bind(this);
35
- gameInstance.renderer.on("resize", this.#boundResize);
36
- gameInstance.renderer.on("draw", this.#boundDraw);
37
- Object.defineProperty(gameInstance, UIRenderer.ID, {
34
+ world.renderer.on("resize", this.#boundResize);
35
+ world.renderer.on("draw", this.#boundDraw);
36
+ Object.defineProperty(world, UIRendererID, {
38
37
  value: this,
39
38
  enumerable: false
40
39
  });
@@ -53,13 +52,13 @@ export class UIRenderer extends ActorComponent {
53
52
  }
54
53
  }
55
54
  #onResize() {
56
- const canvas = this.actor.gameInstance.renderer.canvas;
55
+ const canvas = this.actor.world.renderer.canvas;
57
56
  const { width, height } = canvas.getBoundingClientRect();
58
57
  this.#cssRenderer.setSize(width, height);
59
58
  this.updateWorldPosition();
60
59
  }
61
60
  #onDraw() {
62
- const scene = this.actor.gameInstance.scene.getSource();
61
+ const scene = this.actor.world.sceneManager.getSource();
63
62
  this.#cssRenderer.render(scene, this.camera);
64
63
  }
65
64
  clear() {
@@ -67,12 +66,12 @@ export class UIRenderer extends ActorComponent {
67
66
  node.destroy();
68
67
  }
69
68
  this.nodes = [];
70
- const { gameInstance } = this.actor;
71
- gameInstance.renderer.removeRenderComponent(this.camera);
72
- gameInstance.renderer.off("resize", this.#boundResize);
73
- gameInstance.renderer.off("draw", this.#boundDraw);
69
+ const { world } = this.actor;
70
+ world.renderer.removeRenderComponent(this.camera);
71
+ world.renderer.off("resize", this.#boundResize);
72
+ world.renderer.off("draw", this.#boundDraw);
74
73
  this.#cssRenderer.domElement.remove();
75
- gameInstance[UIRenderer.ID] = undefined;
74
+ world[UIRendererID] = undefined;
76
75
  }
77
76
  }
78
77
  //# sourceMappingURL=UIRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UIRenderer.js","sourceRoot":"","sources":["../../src/ui/UIRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UIRenderer.js","sourceRoot":"","sources":["../../src/ui/UIRenderer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import * as THREE from "three";
2
+ import type { WorldDefaultContext } from "../systems/World.ts";
2
3
  import { Actor, SignalEvent } from "../actor/index.ts";
3
4
  import { UINode, type UINodeOptions } from "./UINode.ts";
4
5
  import { type UITextOptions } from "./UIText.ts";
@@ -12,7 +13,7 @@ export interface UISpriteOptions extends UINodeOptions {
12
13
  style?: UISpriteStyle;
13
14
  styleOnHover?: UISpriteStyle;
14
15
  }
15
- export declare class UISprite extends UINode {
16
+ export declare class UISprite<TContext = WorldDefaultContext> extends UINode<TContext> {
16
17
  #private;
17
18
  mesh: THREE.Mesh;
18
19
  onPointerEnter: SignalEvent<[]>;
@@ -23,7 +24,7 @@ export declare class UISprite extends UINode {
23
24
  onDoubleClick: SignalEvent<[]>;
24
25
  onRightClick: SignalEvent<[]>;
25
26
  onHover: SignalEvent<[]>;
26
- constructor(actor: Actor, options?: UISpriteOptions);
27
+ constructor(actor: Actor<TContext>, options?: UISpriteOptions);
27
28
  awake(): void;
28
29
  isPointerOver(): boolean;
29
30
  update(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"UISprite.d.ts","sourceRoot":"","sources":["../../src/ui/UISprite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,KAAK,EACL,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,MAAM,EACN,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAKrB,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC;IAClC,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,qBAAa,QAAS,SAAQ,MAAM;;IAClC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;IAUjB,cAAc,kBAAqB;IACnC,cAAc,kBAAqB;IACnC,aAAa,kBAAqB;IAClC,WAAW,kBAAqB;IAChC,OAAO,kBAAqB;IAC5B,aAAa,kBAAqB;IAClC,YAAY,kBAAqB;IACjC,OAAO,kBAAqB;gBAG1B,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,eAAoB;IAY/B,KAAK;IA0BL,aAAa,IAAI,OAAO;IASxB,MAAM;IAmDG,OAAO,IAAI,IAAI;CASzB"}
1
+ {"version":3,"file":"UISprite.d.ts","sourceRoot":"","sources":["../../src/ui/UISprite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EACV,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,EACL,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,MAAM,EACN,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAKrB,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC;IAClC,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,qBAAa,QAAQ,CACnB,QAAQ,GAAG,mBAAmB,CAC9B,SAAQ,MAAM,CAAC,QAAQ,CAAC;;IACxB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;IAUjB,cAAc,kBAAqB;IACnC,cAAc,kBAAqB;IACnC,aAAa,kBAAqB;IAClC,WAAW,kBAAqB;IAChC,OAAO,kBAAqB;IAC5B,aAAa,kBAAqB;IAClC,YAAY,kBAAqB;IACjC,OAAO,kBAAqB;gBAG1B,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,EACtB,OAAO,GAAE,eAAoB;IAY/B,KAAK;IA0BL,aAAa,IAAI,OAAO;IASxB,MAAM;IAmDG,OAAO,IAAI,IAAI;CASzB"}
@@ -1,6 +1,5 @@
1
1
  // Import Third-party Dependencies
2
2
  import * as THREE from "three";
3
- // Import Internal Dependencies
4
3
  import { Actor, SignalEvent } from "../actor/index.js";
5
4
  import { UINode } from "./UINode.js";
6
5
  import { UIText } from "./UIText.js";
@@ -51,12 +50,12 @@ export class UISprite extends UINode {
51
50
  material.needsUpdate = true;
52
51
  }
53
52
  isPointerOver() {
54
- const mouse = this.actor.gameInstance.input.getMouseWorldPosition();
53
+ const mouse = this.actor.world.input.getMouseWorldPosition();
55
54
  const box = new THREE.Box3().setFromObject(this.mesh);
56
55
  return box.containsPoint(new THREE.Vector3(mouse.x, mouse.y, 0));
57
56
  }
58
57
  update() {
59
- const { input } = this.actor.gameInstance;
58
+ const { input } = this.actor.world;
60
59
  const isOver = this.isPointerOver();
61
60
  // --- Pointer Enter / Leave ---
62
61
  if (isOver && !this.#isHovered) {