@jolly-pixel/engine 1.1.0 → 1.2.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 (36) hide show
  1. package/README.md +93 -38
  2. package/dist/actor/Actor.d.ts +1 -1
  3. package/dist/actor/Actor.d.ts.map +1 -1
  4. package/dist/actor/Actor.js +3 -15
  5. package/dist/actor/Actor.js.map +1 -1
  6. package/dist/actor/ActorComponent.d.ts +4 -0
  7. package/dist/actor/ActorComponent.d.ts.map +1 -1
  8. package/dist/actor/ActorComponent.js +8 -0
  9. package/dist/actor/ActorComponent.js.map +1 -1
  10. package/dist/systems/FixedTimeStep.d.ts +14 -10
  11. package/dist/systems/FixedTimeStep.d.ts.map +1 -1
  12. package/dist/systems/FixedTimeStep.js +82 -31
  13. package/dist/systems/FixedTimeStep.js.map +1 -1
  14. package/dist/systems/GameInstance.d.ts +5 -3
  15. package/dist/systems/GameInstance.d.ts.map +1 -1
  16. package/dist/systems/GameInstance.js +7 -0
  17. package/dist/systems/GameInstance.js.map +1 -1
  18. package/dist/systems/index.d.ts +1 -0
  19. package/dist/systems/index.d.ts.map +1 -1
  20. package/dist/systems/index.js +1 -0
  21. package/dist/systems/index.js.map +1 -1
  22. package/dist/systems/rendering/RenderStrategy.d.ts +1 -1
  23. package/dist/systems/rendering/RenderStrategy.d.ts.map +1 -1
  24. package/dist/systems/rendering/{GameRenderer.d.ts → Renderer.d.ts} +2 -2
  25. package/dist/systems/rendering/Renderer.d.ts.map +1 -0
  26. package/dist/systems/rendering/{GameRenderer.js → Renderer.js} +1 -1
  27. package/dist/systems/rendering/Renderer.js.map +1 -0
  28. package/dist/systems/rendering/ThreeRenderer.d.ts +2 -2
  29. package/dist/systems/rendering/ThreeRenderer.d.ts.map +1 -1
  30. package/dist/systems/rendering/index.d.ts +1 -1
  31. package/dist/systems/rendering/index.d.ts.map +1 -1
  32. package/dist/systems/rendering/index.js +1 -1
  33. package/dist/systems/rendering/index.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/systems/rendering/GameRenderer.d.ts.map +0 -1
  36. package/dist/systems/rendering/GameRenderer.js.map +0 -1
package/README.md CHANGED
@@ -8,24 +8,25 @@
8
8
 
9
9
  ## 📌 About
10
10
 
11
- Minimal and opinionated [ECS](https://en.wikipedia.org/wiki/Entity_component_system) built on top of Three.js.
11
+ Minimal and opinionated [ECS][ecs] built on top of Three.js inspired by [Superpowers][superpowers] and [Craftstudio][craftstudio].
12
12
 
13
- > [!NOTE]
14
- > JollyPixel is heavily inspired by [Superpowers](https://github.com/superpowers) for the naming (such as Actor instead of Entity).
13
+ > [!WARNING]
14
+ > The engine is still in a heavy phase of development (expect frequent API breaking changes).
15
15
 
16
16
  ## 💡 Features
17
17
 
18
- - Actor/Component architecture with scene tree
19
- - Godot-like [Signals](https://docs.godotengine.org/en/stable/getting_started/step_by_step/signals.html) for Actors and Components
18
+ - [ECS][ecs] architecture with Actors, Components, and Scenes
19
+ - Godot-like [Signals][signals]
20
20
  - Behavior scripts
21
21
  - Input controls (mouse, keyboard, gamepads, touchpad)
22
22
  - Built-in renderers (3D models, 3D text, sprites, …)
23
23
  - Asset management
24
24
  - Audio (background music, sound library, spatial audio)
25
+ - UI toolkits for minimal in-game interfaces
25
26
 
26
27
  ## 💃 Getting Started
27
28
 
28
- This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).
29
+ This package is available in the Node Package Repository and can be easily installed with [npm][npm] or [yarn][yarn].
29
30
 
30
31
  ```bash
31
32
  $ npm i @jolly-pixel/engine
@@ -33,23 +34,33 @@ $ npm i @jolly-pixel/engine
33
34
  $ yarn add @jolly-pixel/engine
34
35
  ```
35
36
 
37
+ ## 🔎 Guides (WIP 🚧)
38
+
39
+ - [Hello World with JollyPixel Engine](./docs/guides/hello-world.md)
40
+
36
41
  ## 📚 API
37
42
 
38
43
  ### ⚙️ Systems
39
44
 
45
+ > [!TIP]
46
+ > [@jolly-pixel/runtime](../runtime/README.md) manage most of that for you
47
+
40
48
  Systems are responsible for driving the game loop, orchestrating rendering, and managing shared
41
49
  resources such as assets. They operate on actors and their components
42
50
  each frame.
43
51
 
44
52
  - [GameInstance](./docs/systems/game-instance.md) — top-level orchestrator that ties the renderer, scene,
45
53
  input, and audio into a unified game loop.
46
- - [GameRenderer](./docs/systems/game-renderer.md) — abstracts the Three.js render pipeline and supports
54
+ - [Renderer](./docs/systems/renderer.md) — abstracts the Three.js render pipeline and supports
47
55
  direct and post-processing render strategies.
48
56
  - [Scene](./docs/systems/scene.md) — the ECS world manager that owns the actor tree and drives
49
57
  per-frame lifecycle (awake → start → update → destroy).
50
58
  - [Asset](./docs/asset.md) — lazy-loading asset pipeline with a
51
59
  registry of loaders, a queue, and a cache.
52
60
 
61
+ <details>
62
+ <summary>Code Example</summary>
63
+
53
64
  ```ts
54
65
  import { Systems, Actor } from "@jolly-pixel/engine";
55
66
 
@@ -66,65 +77,72 @@ const game = new Systems.GameInstance(renderer, {
66
77
  game.connect();
67
78
  ```
68
79
 
69
- > [!TIP]
70
- > [@jolly-pixel/runtime](../runtime/README.md) manage most of that for you
80
+ </details>
71
81
 
72
82
  ### 🎭 Actor
73
83
 
74
84
  An Actor is a named node in the scene tree that holds a Transform, a list of Components, and a
75
- dictionary of Behaviors. The engine uses the name *Actor* (inspired by
76
- [Superpowers](https://github.com/superpowers)) instead of the
77
- traditional *Entity* term.
85
+ dictionary of Behaviors. The engine uses the name *Actor* (inspired by [Superpowers][superpowers]) instead of the traditional *Entity* term.
78
86
 
79
- - [ActorTree](./docs/actor/actor-tree.md) — tree structure that
80
- manages parent-child actor relationships and provides pattern-based
81
- lookups.
82
87
  - [Actor](./docs/actor/actor.md) — the entity itself, holding its
83
88
  transform, components, and behaviors.
84
89
  - [Transform](./docs/actor/actor-transform.md) — built-in component
85
90
  wrapping a Three.js Object3D and exposing a complete local/global
86
91
  transform API (position, orientation, scale, movement).
92
+ - [ActorTree](./docs/actor/actor-tree.md) — tree structure that
93
+ manages parent-child actor relationships and provides pattern-based
94
+ lookups.
95
+
96
+ <details>
97
+ <summary>Code Example</summary>
87
98
 
88
99
  ```ts
89
- const player = new Actor(gameInstance, { name: "player" });
100
+ const player = gameInstance.createActor("Player");
90
101
  player.transform.setLocalPosition(0, 1, 0);
91
102
 
92
- const child = new Actor(gameInstance, {
93
- name: "weapon",
103
+ const child = gameInstance.createActor("Weapon", {
94
104
  parent: player
95
105
  });
106
+
107
+ player.destroy();
96
108
  ```
97
109
 
98
- ### 🧩 Components
110
+ </details>
111
+
112
+ #### 🧩 Components
99
113
 
100
114
  Components are pure data and logic units attached to an Actor. They come in three flavours:
101
115
 
102
116
  - [ActorComponent](./docs/actor/actor-component.md) — the base class all components extend (behaviors and renderers are ActorComponent).
117
+ - [Signals](./docs/components/signal.md) — lightweight pub/sub event emitter for actor-level communication (Godot-inspired signals).
103
118
  - [Renderers](./docs/components/renderers.md) — visual components (sprites, models, text, tiled maps) that know how to draw themselves.
104
119
  - [Camera Controls](./docs/components/camera-3d-controls.md)
105
120
  - [Behavior](./docs/components/behavior.md) — script components with a property system and decorator-driven initialization.
106
- - [Signals](./docs/components/signal.md) — lightweight pub/sub event emitter for actor-level communication (Godot-inspired signals).
107
121
 
108
- ```ts
109
- import {
110
- Behavior, ModelRenderer, Input,
111
- Signal, SceneProperty, type SignalEvent
112
- } from "@jolly-pixel/engine";
122
+ <details>
123
+ <summary>Code Example</summary>
113
124
 
114
- class PlayerBehavior extends Behavior {
115
- @Signal()
116
- onHit: SignalEvent;
125
+ ```ts
126
+ import { Behavior, Actor, SignalEvent } from "@jolly-pixel/engine";
117
127
 
118
- @SceneProperty({ type: "number" })
119
- speed = 0.05;
128
+ export interface PlayerBehaviorOptions {
129
+ speed?: number;
130
+ }
120
131
 
121
- @Input.listen("keyboard.down")
122
- onKeyDown() {
123
- console.log("key pressed");
132
+ class PlayerBehavior extends Behavior {
133
+ onMovement = new SignalEvent();
134
+ speed = 0.1;
135
+
136
+ constructor(
137
+ actor: Actor, options: PlayerBehaviorOptions = {}
138
+ ) {
139
+ super(actor);
140
+ this.speed = options?.speed ?? 0.1;
124
141
  }
125
142
 
126
143
  update() {
127
144
  if (this.actor.gameInstance.input.isKeyDown("ArrowUp")) {
145
+ this.onMovement.emit();
128
146
  this.actor.transform.moveForward(this.speed);
129
147
  }
130
148
  }
@@ -132,14 +150,15 @@ class PlayerBehavior extends Behavior {
132
150
 
133
151
  new Actor(gameInstance, { name: "player" })
134
152
  .registerComponent(ModelRenderer, { path: "models/Player.glb" })
135
- .registerComponent(PlayerBehavior);
153
+ .registerComponent(PlayerBehavior, { speed: 0.5 });
136
154
  ```
137
155
 
156
+ </details>
157
+
138
158
  ### 🎮 Device Controls
139
159
 
140
160
  Aggregates all physical devices (mouse, keyboard, gamepads, touchpad, screen) behind a unified
141
- query API so that behaviors can react to player actions without
142
- coupling to a specific device.
161
+ query API so that behaviors can react to player actions without coupling to a specific device.
143
162
 
144
163
  - [Input](./docs/controls/input.md) — central input manager
145
164
  - [Mouse](./docs/controls/mouse.md)
@@ -147,8 +166,10 @@ coupling to a specific device.
147
166
  - [Gamepad](./docs/controls/gamepad.md)
148
167
  - [Touchpad](./docs/controls/touchpad.md)
149
168
  - [Screen](./docs/controls/screen.md)
150
- - [CombinedInput](./docs/controls/combinedinput.md) — composable input conditions (AND, OR, NOT, sequence)
151
- for complex key bindings.
169
+ - [CombinedInput](./docs/controls/combinedinput.md) — composable input conditions (AND, OR, NOT, sequence) for complex key bindings.
170
+
171
+ <details>
172
+ <summary>Code Example</summary>
152
173
 
153
174
  ```ts
154
175
  import { InputCombination } from "@jolly-pixel/engine";
@@ -168,6 +189,11 @@ if (dashCombo.evaluate(input)) {
168
189
  }
169
190
  ```
170
191
 
192
+ > [!TIP]
193
+ > In ActorComponent or Behavior input are accessible through this.actor.gameInstance.input
194
+
195
+ </details>
196
+
171
197
  ### 🔊 Audio
172
198
 
173
199
  Manages sound playback across the engine. It provides a global volume controller, a factory for creating audio sources, and a playlist-based background music manager.
@@ -178,6 +204,9 @@ Manages sound playback across the engine. It provides a global volume controller
178
204
  playlist-based background music with sequential track playback,
179
205
  pause/resume/stop, and playlist chaining.
180
206
 
207
+ <details>
208
+ <summary>Code Example</summary>
209
+
181
210
  ```ts
182
211
  import { GlobalAudioManager, AudioBackground } from "@jolly-pixel/engine";
183
212
 
@@ -198,6 +227,8 @@ gameInstance.audio.observe(bg);
198
227
  gameInstance.audio.volume = 0.5;
199
228
  ```
200
229
 
230
+ </details>
231
+
201
232
  ### 🖼️ UI
202
233
 
203
234
  An orthographic 2D overlay drawn on top of the 3D scene.
@@ -210,6 +241,20 @@ UI elements are anchored to screen edges and support pointer interaction through
210
241
  - [UISprite](./docs/ui/ui-sprite.md) — interactive sprite with
211
242
  style, hover states, text labels, and pointer signals.
212
243
 
244
+ ## Contributors guide
245
+
246
+ If you are a developer **looking to contribute** to the project, you must first read the [CONTRIBUTING][contributing] guide.
247
+
248
+ Once you have finished your development, check that the tests (and linter) are still good by running the following script:
249
+
250
+ ```bash
251
+ $ npm run test
252
+ $ npm run lint
253
+ ```
254
+
255
+ > [!CAUTION]
256
+ > In case you introduce a new feature or fix a bug, make sure to include tests for it as well.
257
+
213
258
  ### 📦 Internals
214
259
 
215
260
  - [Adapters](./docs/internals/adapters.md)
@@ -219,3 +264,13 @@ UI elements are anchored to screen edges and support pointer interaction through
219
264
  ## License
220
265
 
221
266
  MIT
267
+
268
+ <!-- Reference-style links for DRYness -->
269
+
270
+ [ecs]: https://en.wikipedia.org/wiki/Entity_component_system
271
+ [superpowers]: https://github.com/superpowers
272
+ [craftstudio]: https://sparklinlabs.itch.io/craftstudio
273
+ [signals]: https://docs.godotengine.org/en/stable/getting_started/step_by_step/signals.html
274
+ [npm]: https://docs.npmjs.com/getting-started/what-is-npm
275
+ [yarn]: https://yarnpkg.com
276
+ [contributing]: ../../CONTRIBUTING.md
@@ -22,7 +22,7 @@ export declare class Actor extends ActorTree {
22
22
  transform: Transform;
23
23
  pendingForDestruction: boolean;
24
24
  threeObject: THREE.Group<THREE.Object3DEventMap>;
25
- constructor(gameInstance: GameInstance, options: ActorOptions);
25
+ constructor(gameInstance: GameInstance<any>, options: ActorOptions);
26
26
  registerComponent<T extends ComponentConstructor>(componentClass: T, ...args: RequiresOptions<T> extends true ? [options: ConstructorParameters<T>[1], callback?: (component: InstanceType<T>) => void] : [options?: ConstructorParameters<T>[1], callback?: (component: InstanceType<T>) => void]): this;
27
27
  registerComponentAndGet<T extends ComponentConstructor>(componentClass: T, ...args: RequiresOptions<T> extends true ? [options: ConstructorParameters<T>[1]] : [options?: ConstructorParameters<T>[1]]): InstanceType<T>;
28
28
  awake(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../../src/actor/Actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../../src/actor/Actor.ts"],"names":[],"mappings":"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"}
@@ -46,13 +46,6 @@ export class Actor extends ActorTree {
46
46
  registerComponent(componentClass, ...args) {
47
47
  const [options, callback] = args;
48
48
  const component = new componentClass(this, options);
49
- if (this.components.indexOf(component) === -1) {
50
- this.components.push(component);
51
- }
52
- const index = this.gameInstance.scene.componentsToBeStarted.indexOf(component);
53
- if (index === -1) {
54
- this.gameInstance.scene.componentsToBeStarted.push(component);
55
- }
56
49
  callback?.(component);
57
50
  if (this.awoken) {
58
51
  component.awake?.();
@@ -62,13 +55,6 @@ export class Actor extends ActorTree {
62
55
  registerComponentAndGet(componentClass, ...args) {
63
56
  const [options] = args;
64
57
  const component = new componentClass(this, options);
65
- if (this.components.indexOf(component) === -1) {
66
- this.components.push(component);
67
- }
68
- const index = this.gameInstance.scene.componentsToBeStarted.indexOf(component);
69
- if (index === -1) {
70
- this.gameInstance.scene.componentsToBeStarted.push(component);
71
- }
72
58
  if (this.awoken) {
73
59
  component.awake?.();
74
60
  }
@@ -86,7 +72,9 @@ export class Actor extends ActorTree {
86
72
  return this.pendingForDestruction;
87
73
  }
88
74
  destroy() {
89
- this.components.forEach((component) => component.destroy?.());
75
+ for (let i = this.components.length - 1; i >= 0; i--) {
76
+ this.components[i].destroy?.();
77
+ }
90
78
  if (this.parent === null) {
91
79
  this.gameInstance.scene.tree.remove(this);
92
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../src/actor/Actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../src/actor/Actor.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,10 @@ export type ActorComponentEvents = {
10
10
  };
11
11
  export declare class ActorComponent extends EventEmitter<ActorComponentEvents> implements Component {
12
12
  #private;
13
+ protected static Id: number;
14
+ static generateNextId(): number;
15
+ static clearId(): void;
16
+ id: number;
13
17
  actor: Actor;
14
18
  typeName: FreeComponentEnum;
15
19
  pendingForDestruction: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ActorComponent.d.ts","sourceRoot":"","sources":["../../src/actor/ActorComponent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,mBAAmB,EAAE,EAAE,CAAC;CACzB,CAAC;AAEF,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,CAAE,YAAW,SAAS;;IACzF,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAE5B,qBAAqB,UAAS;gBAG5B,OAAO,EAAE,qBAAqB;IA0BhC,WAAW;IAIX,OAAO;CAWR"}
1
+ {"version":3,"file":"ActorComponent.d.ts","sourceRoot":"","sources":["../../src/actor/ActorComponent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,mBAAmB,EAAE,EAAE,CAAC;CACzB,CAAC;AAEF,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,CAAE,YAAW,SAAS;;IACzF,SAAS,CAAC,MAAM,CAAC,EAAE,SAAK;IAExB,MAAM,CAAC,cAAc;IAIrB,MAAM,CAAC,OAAO;IAId,EAAE,SAAmC;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAE5B,qBAAqB,UAAS;gBAG5B,OAAO,EAAE,qBAAqB;IA0BhC,WAAW;IAIX,OAAO;CAWR"}
@@ -4,6 +4,14 @@ import { EventEmitter } from "@posva/event-emitter";
4
4
  import { Actor } from "./Actor.js";
5
5
  import { getSignalMetadata, SignalEvent } from "./Signal.js";
6
6
  export class ActorComponent extends EventEmitter {
7
+ static Id = 0;
8
+ static generateNextId() {
9
+ return this.Id++;
10
+ }
11
+ static clearId() {
12
+ this.Id = 0;
13
+ }
14
+ id = ActorComponent.generateNextId();
7
15
  actor;
8
16
  typeName;
9
17
  pendingForDestruction = false;
@@ -1 +1 @@
1
- {"version":3,"file":"ActorComponent.js","sourceRoot":"","sources":["../../src/actor/ActorComponent.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,+BAA+B;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAe7D,MAAM,OAAO,cAAe,SAAQ,YAAkC;IACpE,KAAK,CAAQ;IACb,QAAQ,CAAoB;IAE5B,qBAAqB,GAAG,KAAK,CAAC;IAE9B,YACE,OAA8B;QAE9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAEjC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/D,0DAA0D;QAC1D,mDAAmD;QACnD,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,qBAAqB;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,YAAY,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC;YACzC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,OAAO;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrF,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"ActorComponent.js","sourceRoot":"","sources":["../../src/actor/ActorComponent.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,+BAA+B;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAe7D,MAAM,OAAO,cAAe,SAAQ,YAAkC;IAC1D,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;IAExB,MAAM,CAAC,cAAc;QACnB,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACd,CAAC;IAED,EAAE,GAAG,cAAc,CAAC,cAAc,EAAE,CAAC;IACrC,KAAK,CAAQ;IACb,QAAQ,CAAoB;IAE5B,qBAAqB,GAAG,KAAK,CAAC;IAE9B,YACE,OAA8B;QAE9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAEjC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/D,0DAA0D;QAC1D,mDAAmD;QACnD,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,qBAAqB;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,YAAY,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC;YACzC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,OAAO;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrF,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC"}
@@ -1,16 +1,20 @@
1
- export interface TimerAdapter {
2
- update: () => void;
3
- getDelta: () => number;
1
+ export interface FixedTimeStepCallbacks {
2
+ fixedUpdate: (fixedDelta: number) => void;
3
+ update?: (interpolation: number, delta: number) => void;
4
4
  }
5
5
  export declare class FixedTimeStep {
6
+ #private;
6
7
  static MaxFramesPerSecond: number;
7
8
  framesPerSecond: number;
8
- clock: TimerAdapter;
9
- constructor(clock?: TimerAdapter);
10
- setFps(framesPerSecond: number | undefined): void;
11
- tick(accumulatedTime: number, callback?: (deltaTime: number) => boolean): {
12
- updates: number;
13
- timeLeft: number;
14
- };
9
+ fixedFramesPerSecond: number;
10
+ constructor(fps?: number, fixedFps?: number);
11
+ setFps(fps: number, fixedFps?: number): void;
12
+ start(): void;
13
+ stop(): void;
14
+ /**
15
+ * Main loop. Call this from your requestAnimationFrame or similar.
16
+ * @param callbacks { fixedUpdate, update }
17
+ */
18
+ tick(callbacks: FixedTimeStepCallbacks): void;
15
19
  }
16
20
  //# sourceMappingURL=FixedTimeStep.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FixedTimeStep.d.ts","sourceRoot":"","sources":["../../src/systems/FixedTimeStep.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,kBAAkB,SAAM;IAE/B,eAAe,SAAM;IACrB,KAAK,EAAE,YAAY,CAAC;gBAGlB,KAAK,GAAE,YAAgC;IAKzC,MAAM,CACJ,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,IAAI;IAYP,IAAI,CACF,eAAe,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GACxC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;KAAE;CA4B1C"}
1
+ {"version":3,"file":"FixedTimeStep.d.ts","sourceRoot":"","sources":["../../src/systems/FixedTimeStep.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,sBAAsB;IAErC,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAE1C,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD;AAED,qBAAa,aAAa;;IACxB,MAAM,CAAC,kBAAkB,SAAkB;IAQ3C,eAAe,SAAkB;IACjC,oBAAoB,SAAoB;gBAGtC,GAAG,GAAE,MAAuB,EAC5B,QAAQ,GAAE,MAAyB;IASrC,MAAM,CACJ,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,MAAY,GACrB,IAAI;IAYP,KAAK;IAML,IAAI;IAIJ;;;OAGG;IACH,IAAI,CACF,SAAS,EAAE,sBAAsB,GAChC,IAAI;CAmCR"}
@@ -1,41 +1,92 @@
1
- // Import Third-party Dependencies
2
- import * as THREE from "three";
1
+ // CONSTANTS
2
+ const kDefaultMaxFps = 60;
3
+ const kDefaultFixedFps = 60;
4
+ const kMaxAccumulatedSteps = 5;
5
+ class InternalTimer {
6
+ #last = 0;
7
+ #delta = 0;
8
+ start() {
9
+ this.#last = performance.now();
10
+ this.#delta = 0;
11
+ }
12
+ update() {
13
+ const now = performance.now();
14
+ this.#delta = now - this.#last;
15
+ this.#last = now;
16
+ }
17
+ getDelta() {
18
+ return this.#delta;
19
+ }
20
+ }
3
21
  export class FixedTimeStep {
4
- static MaxFramesPerSecond = 60;
5
- framesPerSecond = 60;
6
- clock;
7
- constructor(clock = new THREE.Timer()) {
8
- this.clock = clock;
9
- }
10
- setFps(framesPerSecond) {
11
- if (!framesPerSecond) {
22
+ static MaxFramesPerSecond = kDefaultMaxFps;
23
+ #timer;
24
+ #accumulated = 0;
25
+ #fixedDelta;
26
+ #maxAccumulated;
27
+ #running = false;
28
+ framesPerSecond = kDefaultMaxFps;
29
+ fixedFramesPerSecond = kDefaultFixedFps;
30
+ constructor(fps = kDefaultMaxFps, fixedFps = kDefaultFixedFps) {
31
+ this.framesPerSecond = fps;
32
+ this.fixedFramesPerSecond = fixedFps;
33
+ this.#fixedDelta = 1000 / this.fixedFramesPerSecond;
34
+ this.#maxAccumulated = kMaxAccumulatedSteps * this.#fixedDelta;
35
+ this.#timer = new InternalTimer();
36
+ }
37
+ setFps(fps, fixedFps = fps) {
38
+ if (typeof fps === "number") {
39
+ this.framesPerSecond = Math.max(1, Math.min(fps, FixedTimeStep.MaxFramesPerSecond));
40
+ }
41
+ if (typeof fixedFps === "number") {
42
+ this.fixedFramesPerSecond = Math.max(1, Math.min(fixedFps, FixedTimeStep.MaxFramesPerSecond));
43
+ }
44
+ this.#fixedDelta = 1000 / this.fixedFramesPerSecond;
45
+ this.#maxAccumulated = kMaxAccumulatedSteps * this.#fixedDelta;
46
+ }
47
+ start() {
48
+ this.#accumulated = 0;
49
+ this.#timer.start();
50
+ this.#running = true;
51
+ }
52
+ stop() {
53
+ this.#running = false;
54
+ }
55
+ /**
56
+ * Main loop. Call this from your requestAnimationFrame or similar.
57
+ * @param callbacks { fixedUpdate, update }
58
+ */
59
+ tick(callbacks) {
60
+ if (!this.#running) {
12
61
  return;
13
62
  }
14
- this.framesPerSecond = THREE.MathUtils.clamp(framesPerSecond, 1, FixedTimeStep.MaxFramesPerSecond);
15
- }
16
- tick(accumulatedTime, callback) {
17
- this.clock.update();
18
- const updateInterval = 1000 / this.framesPerSecond;
19
- let newAccumulatedTime = accumulatedTime;
20
- // Limit how many update()s to try and catch up,
21
- // to avoid falling into the "black pit of despair" aka "doom spiral".
22
- // where every tick takes longer than the previous one.
23
- // See http://blogs.msdn.com/b/shawnhar/archive/2011/03/25/technical-term-that-should-exist-quot-black-pit-of-despair-quot.aspx
24
- const maxAccumulatedUpdates = 5;
25
- const maxAccumulatedTime = maxAccumulatedUpdates * updateInterval;
26
- if (newAccumulatedTime > maxAccumulatedTime) {
27
- newAccumulatedTime = maxAccumulatedTime;
63
+ this.#timer.update();
64
+ let delta = this.#timer.getDelta();
65
+ if (delta > 1000) {
66
+ // Prevent huge catch-up after tab switch or pause
67
+ delta = this.#fixedDelta;
68
+ }
69
+ this.#accumulated += delta;
70
+ if (this.#accumulated > this.#maxAccumulated) {
71
+ this.#accumulated = this.#maxAccumulated;
28
72
  }
29
- // Update
30
- let updates = 0;
31
- while (newAccumulatedTime >= updateInterval) {
32
- if (callback?.(this.clock.getDelta())) {
73
+ // Fixed update steps
74
+ let steps = 0;
75
+ while (this.#accumulated >= this.#fixedDelta) {
76
+ callbacks.fixedUpdate(this.#fixedDelta);
77
+ this.#accumulated -= this.#fixedDelta;
78
+ steps++;
79
+ if (steps > kMaxAccumulatedSteps) {
80
+ // Avoid spiral of death
81
+ this.#accumulated = 0;
33
82
  break;
34
83
  }
35
- newAccumulatedTime -= updateInterval;
36
- updates++;
37
84
  }
38
- return { updates, timeLeft: newAccumulatedTime };
85
+ // Variable update (render/interpolation)
86
+ if (callbacks.update) {
87
+ const alpha = this.#accumulated / this.#fixedDelta;
88
+ callbacks.update(alpha, delta);
89
+ }
39
90
  }
40
91
  }
41
92
  //# sourceMappingURL=FixedTimeStep.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FixedTimeStep.js","sourceRoot":"","sources":["../../src/systems/FixedTimeStep.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,OAAO,aAAa;IACxB,MAAM,CAAC,kBAAkB,GAAG,EAAE,CAAC;IAE/B,eAAe,GAAG,EAAE,CAAC;IACrB,KAAK,CAAe;IAEpB,YACE,QAAsB,IAAI,KAAK,CAAC,KAAK,EAAE;QAEvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CACJ,eAAmC;QAEnC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAC1C,eAAe,EACf,CAAC,EACD,aAAa,CAAC,kBAAkB,CACjC,CAAC;IACJ,CAAC;IAED,IAAI,CACF,eAAuB,EACvB,QAAyC;QAEzC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEpB,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;QACnD,IAAI,kBAAkB,GAAG,eAAe,CAAC;QAEzC,gDAAgD;QAChD,sEAAsE;QACtE,uDAAuD;QACvD,+HAA+H;QAC/H,MAAM,qBAAqB,GAAG,CAAC,CAAC;QAChC,MAAM,kBAAkB,GAAG,qBAAqB,GAAG,cAAc,CAAC;QAClE,IAAI,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;YAC5C,kBAAkB,GAAG,kBAAkB,CAAC;QAC1C,CAAC;QAED,SAAS;QACT,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,kBAAkB,IAAI,cAAc,EAAE,CAAC;YAC5C,IAAI,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;gBACtC,MAAM;YACR,CAAC;YACD,kBAAkB,IAAI,cAAc,CAAC;YACrC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IACnD,CAAC"}
1
+ {"version":3,"file":"FixedTimeStep.js","sourceRoot":"","sources":["../../src/systems/FixedTimeStep.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as THREE from "three";
2
- import { type GameRenderer } from "./rendering/index.ts";
2
+ import { type Renderer } from "./rendering/index.ts";
3
+ import { Actor, type ActorOptions } from "../actor/index.ts";
3
4
  import { type Scene } from "./Scene.ts";
4
5
  import { Input } from "../controls/Input.class.ts";
5
6
  import { GlobalAudio } from "../audio/GlobalAudio.ts";
@@ -15,13 +16,14 @@ export interface GameInstanceOptions {
15
16
  }
16
17
  export declare class GameInstance<T = THREE.WebGLRenderer> {
17
18
  #private;
18
- renderer: GameRenderer<T>;
19
+ renderer: Renderer<T>;
19
20
  input: Input;
20
21
  loadingManager: THREE.LoadingManager;
21
22
  scene: Scene;
22
23
  audio: GlobalAudio;
23
- constructor(renderer: GameRenderer<T>, options: GameInstanceOptions);
24
+ constructor(renderer: Renderer<T>, options: GameInstanceOptions);
24
25
  setLoadingManager(manager: THREE.LoadingManager): this;
26
+ createActor(name: string, options: Omit<ActorOptions, "name">): Actor;
25
27
  connect(): this;
26
28
  disconnect(): this;
27
29
  update(deltaTime: number): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"GameInstance.d.ts","sourceRoot":"","sources":["../../src/systems/GameInstance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,KAAK,EACX,MAAM,YAAY,CAAC;AACpB,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,mBAAmB;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,qBAAa,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa;;IAC/C,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,KAAK,CAAC,cAAc,CAA8B;IAClE,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;gBAKjB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,mBAAmB;IAmB9B,iBAAiB,CACf,OAAO,EAAE,KAAK,CAAC,cAAc;IAO/B,OAAO;IAQP,UAAU;IAOV,MAAM,CACJ,SAAS,EAAE,MAAM,GAChB,OAAO;IAaV,MAAM;CAGP"}
1
+ {"version":3,"file":"GameInstance.d.ts","sourceRoot":"","sources":["../../src/systems/GameInstance.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,KAAK,EACX,MAAM,YAAY,CAAC;AACpB,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,mBAAmB;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,qBAAa,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa;;IAC/C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,KAAK,CAAC,cAAc,CAA8B;IAClE,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;gBAKjB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,OAAO,EAAE,mBAAmB;IAmB9B,iBAAiB,CACf,OAAO,EAAE,KAAK,CAAC,cAAc;IAO/B,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAClC,KAAK;IAOR,OAAO;IAQP,UAAU;IAOV,MAAM,CACJ,SAAS,EAAE,MAAM,GAChB,OAAO;IAaV,MAAM;CAGP"}
@@ -2,6 +2,7 @@
2
2
  import * as THREE from "three";
3
3
  // Import Internal Dependencies
4
4
  import {} from "./rendering/index.js";
5
+ import { Actor } from "../actor/index.js";
5
6
  import {} from "./Scene.js";
6
7
  import { Input } from "../controls/Input.class.js";
7
8
  import { GlobalAudio } from "../audio/GlobalAudio.js";
@@ -27,6 +28,12 @@ export class GameInstance {
27
28
  this.loadingManager = manager;
28
29
  return this;
29
30
  }
31
+ createActor(name, options) {
32
+ return new Actor(this, {
33
+ name,
34
+ ...options
35
+ });
36
+ }
30
37
  connect() {
31
38
  this.input.connect();
32
39
  this.#windowAdapter.addEventListener("resize", this.renderer.resize);
@@ -1 +1 @@
1
- {"version":3,"file":"GameInstance.js","sourceRoot":"","sources":["../../src/systems/GameInstance.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,+BAA+B;AAC/B,OAAO,EAEN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAEL,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAa/B,MAAM,OAAO,YAAY;IACvB,QAAQ,CAAkB;IAC1B,KAAK,CAAQ;IACb,cAAc,GAAyB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;IAClE,KAAK,CAAQ;IACb,KAAK,CAAc;IAEnB,cAAc,CAAgB;IAE9B,YACE,QAAyB,EACzB,OAA4B;QAE5B,MAAM,EACJ,KAAK,EACL,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC,EACnF,KAAK,GAAG,IAAI,WAAW,EAAE,EACzB,aAAa,GAAG,IAAI,oBAAoB,EAAE,EAC1C,cAAc,GAAG,IAAI,qBAAqB,EAAE,EAC7C,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QAEpC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,iBAAiB,CACf,OAA6B;QAE7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAE9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAExE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CACJ,SAAiB;QAEjB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAEtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"GameInstance.js","sourceRoot":"","sources":["../../src/systems/GameInstance.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,+BAA+B;AAC/B,OAAO,EAEN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,EAEN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAEL,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAa/B,MAAM,OAAO,YAAY;IACvB,QAAQ,CAAc;IACtB,KAAK,CAAQ;IACb,cAAc,GAAyB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;IAClE,KAAK,CAAQ;IACb,KAAK,CAAc;IAEnB,cAAc,CAAgB;IAE9B,YACE,QAAqB,EACrB,OAA4B;QAE5B,MAAM,EACJ,KAAK,EACL,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK,EAAE,CAAC,EACnF,KAAK,GAAG,IAAI,WAAW,EAAE,EACzB,aAAa,GAAG,IAAI,oBAAoB,EAAE,EAC1C,cAAc,GAAG,IAAI,qBAAqB,EAAE,EAC7C,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QAEpC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,iBAAiB,CACf,OAA6B;QAE7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAE9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CACT,IAAY,EACZ,OAAmC;QAEnC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;YACrB,IAAI;YACJ,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAExE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CACJ,SAAiB;QAEjB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAEtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CACF"}
@@ -2,6 +2,7 @@ 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
4
  export * from "./GameInstance.ts";
5
+ export * from "./FixedTimeStep.ts";
5
6
  export * from "./rendering/index.ts";
6
7
  export * from "./Scene.ts";
7
8
  export type { AssetOnProgressCallback };
@@ -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,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,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"}
@@ -2,6 +2,7 @@
2
2
  import { AssetManager } from "./asset/Manager.js";
3
3
  export * from "./asset/Base.js";
4
4
  export * from "./GameInstance.js";
5
+ export * from "./FixedTimeStep.js";
5
6
  export * from "./rendering/index.js";
6
7
  export * from "./Scene.js";
7
8
  export const Assets = new AssetManager();
@@ -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,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,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,6 +1,6 @@
1
1
  import * as THREE from "three";
2
2
  import type { EffectComposer, Pass } from "three/addons/postprocessing/EffectComposer.js";
3
- import type { RenderComponent } from "./GameRenderer.ts";
3
+ import type { RenderComponent } from "./Renderer.ts";
4
4
  export type RenderMode = "direct" | "composer";
5
5
  export interface RenderStrategy {
6
6
  render(scene: THREE.Scene, renderComponents: RenderComponent[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"RenderStrategy.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/RenderStrategy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EACL,MAAM,+CAA+C,CAAC;AAGvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACtE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,qBAAa,oBAAqB,YAAW,cAAc;;gBAIvD,QAAQ,EAAE,KAAK,CAAC,aAAa;IAK/B,MAAM,CACJ,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,gBAAgB,EAAE,eAAe,EAAE,GAClC,IAAI;IAMP,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAG5C;AAED,qBAAa,sBAAuB,YAAW,cAAc;;gBAIzD,QAAQ,EAAE,cAAc;IAK1B,MAAM,CACJ,MAAM,EAAE,KAAK,CAAC,KAAK,EACnB,iBAAiB,EAAE,eAAe,EAAE,GACnC,IAAI;IAIP,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3C,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI3B,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI9B,WAAW,IAAI,cAAc;CAG9B"}
1
+ {"version":3,"file":"RenderStrategy.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/RenderStrategy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EACL,MAAM,+CAA+C,CAAC;AAGvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACtE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,qBAAa,oBAAqB,YAAW,cAAc;;gBAIvD,QAAQ,EAAE,KAAK,CAAC,aAAa;IAK/B,MAAM,CACJ,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,gBAAgB,EAAE,eAAe,EAAE,GAClC,IAAI;IAMP,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAG5C;AAED,qBAAa,sBAAuB,YAAW,cAAc;;gBAIzD,QAAQ,EAAE,cAAc;IAK1B,MAAM,CACJ,MAAM,EAAE,KAAK,CAAC,KAAK,EACnB,iBAAiB,EAAE,eAAe,EAAE,GACnC,IAAI;IAIP,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3C,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI3B,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI9B,WAAW,IAAI,cAAc;CAG9B"}
@@ -16,7 +16,7 @@ export type RendererEvents = {
16
16
  }
17
17
  ];
18
18
  };
19
- export interface GameRenderer<T = any, Events extends GenericEventMap = RendererEvents> {
19
+ export interface Renderer<T = any, Events extends GenericEventMap = RendererEvents> {
20
20
  readonly canvas: HTMLCanvasElement;
21
21
  getSource(): T;
22
22
  setRenderMode(mode: RenderMode): this;
@@ -32,4 +32,4 @@ export interface GameRenderer<T = any, Events extends GenericEventMap = Renderer
32
32
  onDraw(callback: (source: T) => void): void;
33
33
  clear(): void;
34
34
  }
35
- //# sourceMappingURL=GameRenderer.d.ts.map
35
+ //# sourceMappingURL=Renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/Renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,IAAI,OAAO,EACnB,oBAAoB,IAAI,mBAAmB,EAC5C,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,kBAAkB,CAAC;AAEjF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE;QACN;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;SAAE;KACnC,CAAC;IACF,IAAI,EAAE;QACJ;YAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;SAAE;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,eAAe,GAAG,cAAc;IAChF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC,SAAS,IAAI,CAAC,CAAC;IACf,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAErC,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IACrD,qBAAqB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAExD,EAAE,CAAC,GAAG,SAAS,MAAM,MAAM,EACzB,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAC5B,mBAAmB,CAAC;IACvB,GAAG,CAAC,GAAG,SAAS,MAAM,MAAM,EAC1B,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAC7B,IAAI,CAAC;IACR,IAAI,CAAC,GAAG,SAAS,MAAM,MAAM,EAC3B,IAAI,EAAE,GAAG,EACT,GAAG,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,EAAE,GACxD,MAAM,CAAC,GAAG,CAAC,GACX,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAChB,IAAI,CAAC;IAER,MAAM,IAAI,IAAI,CAAC;IACf,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5C,KAAK,IAAI,IAAI,CAAC;CACf"}
@@ -1,3 +1,3 @@
1
1
  // Import Third-party Dependencies
2
2
  import * as THREE from "three";
3
- //# sourceMappingURL=GameRenderer.js.map
3
+ //# sourceMappingURL=Renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../../../src/systems/rendering/Renderer.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC"}
@@ -1,7 +1,7 @@
1
1
  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
- import type { GameRenderer, RenderComponent, RendererEvents } from "./GameRenderer.ts";
4
+ import type { Renderer, RenderComponent, RendererEvents } from "./Renderer.ts";
5
5
  import type { Scene } from "../Scene.ts";
6
6
  import { type RenderMode, type RenderStrategy } from "./RenderStrategy.ts";
7
7
  export type ThreeRendererEvents = RendererEvents;
@@ -12,7 +12,7 @@ export interface ThreeRendererOptions {
12
12
  renderMode: RenderMode;
13
13
  scene: Scene;
14
14
  }
15
- export declare class ThreeRenderer extends EventEmitter<ThreeRendererEvents> implements GameRenderer {
15
+ export declare class ThreeRenderer extends EventEmitter<ThreeRendererEvents> implements Renderer {
16
16
  webGLRenderer: THREE.WebGLRenderer;
17
17
  renderComponents: RenderComponent[];
18
18
  renderStrategy: RenderStrategy;
@@ -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,YAAY,EACZ,eAAe,EACf,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,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,YAAY;IACvB,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,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,4 +1,4 @@
1
- export * from "./GameRenderer.ts";
1
+ export * from "./Renderer.ts";
2
2
  export * from "./ThreeRenderer.ts";
3
3
  export type { RenderMode } from "./RenderStrategy.ts";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,3 +1,3 @@
1
- export * from "./GameRenderer.js";
1
+ export * from "./Renderer.js";
2
2
  export * from "./ThreeRenderer.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/systems/rendering/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/systems/rendering/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jolly-pixel/engine",
3
3
  "description": "Minimal and opiniated ECS framework on top of three.js.",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -1 +0,0 @@
1
- {"version":3,"file":"GameRenderer.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/GameRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,IAAI,OAAO,EACnB,oBAAoB,IAAI,mBAAmB,EAC5C,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,kBAAkB,CAAC;AAEjF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE;QACN;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;SAAE;KACnC,CAAC;IACF,IAAI,EAAE;QACJ;YAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;SAAE;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,eAAe,GAAG,cAAc;IACpF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC,SAAS,IAAI,CAAC,CAAC;IACf,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAErC,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IACrD,qBAAqB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAExD,EAAE,CAAC,GAAG,SAAS,MAAM,MAAM,EACzB,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAC5B,mBAAmB,CAAC;IACvB,GAAG,CAAC,GAAG,SAAS,MAAM,MAAM,EAC1B,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAC7B,IAAI,CAAC;IACR,IAAI,CAAC,GAAG,SAAS,MAAM,MAAM,EAC3B,IAAI,EAAE,GAAG,EACT,GAAG,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,EAAE,GACxD,MAAM,CAAC,GAAG,CAAC,GACX,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAChB,IAAI,CAAC;IAER,MAAM,IAAI,IAAI,CAAC;IACf,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5C,KAAK,IAAI,IAAI,CAAC;CACf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GameRenderer.js","sourceRoot":"","sources":["../../../src/systems/rendering/GameRenderer.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC"}