@jolly-pixel/engine 1.1.1 → 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.
- package/README.md +93 -38
- package/dist/actor/Actor.d.ts +1 -1
- package/dist/actor/Actor.d.ts.map +1 -1
- package/dist/actor/Actor.js.map +1 -1
- package/dist/systems/FixedTimeStep.d.ts +14 -11
- package/dist/systems/FixedTimeStep.d.ts.map +1 -1
- package/dist/systems/FixedTimeStep.js +82 -33
- package/dist/systems/FixedTimeStep.js.map +1 -1
- package/dist/systems/GameInstance.d.ts +5 -3
- package/dist/systems/GameInstance.d.ts.map +1 -1
- package/dist/systems/GameInstance.js +7 -0
- package/dist/systems/GameInstance.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/RenderStrategy.d.ts +1 -1
- package/dist/systems/rendering/RenderStrategy.d.ts.map +1 -1
- package/dist/systems/rendering/{GameRenderer.d.ts → Renderer.d.ts} +2 -2
- package/dist/systems/rendering/Renderer.d.ts.map +1 -0
- package/dist/systems/rendering/{GameRenderer.js → Renderer.js} +1 -1
- package/dist/systems/rendering/Renderer.js.map +1 -0
- package/dist/systems/rendering/ThreeRenderer.d.ts +2 -2
- package/dist/systems/rendering/ThreeRenderer.d.ts.map +1 -1
- package/dist/systems/rendering/index.d.ts +1 -1
- package/dist/systems/rendering/index.d.ts.map +1 -1
- package/dist/systems/rendering/index.js +1 -1
- package/dist/systems/rendering/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/systems/rendering/GameRenderer.d.ts.map +0 -1
- 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]
|
|
11
|
+
Minimal and opinionated [ECS][ecs] built on top of Three.js inspired by [Superpowers][superpowers] and [Craftstudio][craftstudio].
|
|
12
12
|
|
|
13
|
-
> [!
|
|
14
|
-
>
|
|
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
|
-
-
|
|
19
|
-
- Godot-like [Signals]
|
|
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]
|
|
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
|
-
- [
|
|
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
|
-
>
|
|
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 =
|
|
100
|
+
const player = gameInstance.createActor("Player");
|
|
90
101
|
player.transform.setLocalPosition(0, 1, 0);
|
|
91
102
|
|
|
92
|
-
const child =
|
|
93
|
-
name: "weapon",
|
|
103
|
+
const child = gameInstance.createActor("Weapon", {
|
|
94
104
|
parent: player
|
|
95
105
|
});
|
|
106
|
+
|
|
107
|
+
player.destroy();
|
|
96
108
|
```
|
|
97
109
|
|
|
98
|
-
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
Behavior, ModelRenderer, Input,
|
|
111
|
-
Signal, SceneProperty, type SignalEvent
|
|
112
|
-
} from "@jolly-pixel/engine";
|
|
122
|
+
<details>
|
|
123
|
+
<summary>Code Example</summary>
|
|
113
124
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
onHit: SignalEvent;
|
|
125
|
+
```ts
|
|
126
|
+
import { Behavior, Actor, SignalEvent } from "@jolly-pixel/engine";
|
|
117
127
|
|
|
118
|
-
|
|
119
|
-
speed
|
|
128
|
+
export interface PlayerBehaviorOptions {
|
|
129
|
+
speed?: number;
|
|
130
|
+
}
|
|
120
131
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
-
|
|
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
|
package/dist/actor/Actor.d.ts
CHANGED
|
@@ -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
|
|
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":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EACV,SAAS,EACV,MAAM,wBAAwB,CAAC;AAEhC,KAAK,oBAAoB,GAAG,KAAK,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC;AAE5E,KAAK,eAAe,CAAC,CAAC,SAAS,oBAAoB,IACjD,CAAC,SAAS,KAAK,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GACjE,SAAS,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,GAClC,KAAK,CAAC;AAEZ,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC3B;AAED,qBAAa,KAAM,SAAQ,SAAS;IAClC,YAAY,EAAE,YAAY,CAAC;IAE3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,UAAS;IACf,MAAM,EAAE,KAAK,GAAG,IAAI,CAAQ;IAC5B,UAAU,EAAE,SAAS,EAAE,CAAM;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAM;IAChD,SAAS,EAAE,SAAS,CAAC;IACrB,qBAAqB,UAAS;IAE9B,WAAW,sCAAqB;gBAG9B,YAAY,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../../src/actor/Actor.ts"],"names":[],"mappings":"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"}
|
package/dist/actor/Actor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../src/actor/Actor.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,+BAA+B;AAC/B,OAAO,EAAqB,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoB3C,MAAM,OAAO,KAAM,SAAQ,SAAS;IAClC,YAAY,CAAe;IAE3B,IAAI,CAAS;IACb,MAAM,GAAG,KAAK,CAAC;IACf,MAAM,GAAiB,IAAI,CAAC;IAC5B,UAAU,GAAgB,EAAE,CAAC;IAC7B,SAAS,GAAoC,EAAE,CAAC;IAChD,SAAS,CAAY;IACrB,qBAAqB,GAAG,KAAK,CAAC;IAE9B,WAAW,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;IAEhC,YACE,
|
|
1
|
+
{"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../src/actor/Actor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
export interface
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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;
|
|
16
19
|
}
|
|
17
20
|
//# sourceMappingURL=FixedTimeStep.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FixedTimeStep.d.ts","sourceRoot":"","sources":["../../src/systems/FixedTimeStep.ts"],"names":[],"mappings":"
|
|
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,43 +1,92 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
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 =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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) {
|
|
13
61
|
return;
|
|
14
62
|
}
|
|
15
|
-
this.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// where every tick takes longer than the previous one.
|
|
25
|
-
// See http://blogs.msdn.com/b/shawnhar/archive/2011/03/25/technical-term-that-should-exist-quot-black-pit-of-despair-quot.aspx
|
|
26
|
-
const maxAccumulatedUpdates = 5;
|
|
27
|
-
const maxAccumulatedTime = maxAccumulatedUpdates * updateInterval;
|
|
28
|
-
if (newAccumulatedTime > maxAccumulatedTime) {
|
|
29
|
-
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;
|
|
30
72
|
}
|
|
31
|
-
//
|
|
32
|
-
let
|
|
33
|
-
while (
|
|
34
|
-
|
|
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;
|
|
35
82
|
break;
|
|
36
83
|
}
|
|
37
|
-
newAccumulatedTime -= updateInterval;
|
|
38
|
-
updates++;
|
|
39
84
|
}
|
|
40
|
-
|
|
85
|
+
// Variable update (render/interpolation)
|
|
86
|
+
if (callbacks.update) {
|
|
87
|
+
const alpha = this.#accumulated / this.#fixedDelta;
|
|
88
|
+
callbacks.update(alpha, delta);
|
|
89
|
+
}
|
|
41
90
|
}
|
|
42
91
|
}
|
|
43
92
|
//# sourceMappingURL=FixedTimeStep.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FixedTimeStep.js","sourceRoot":"","sources":["../../src/systems/FixedTimeStep.ts"],"names":[],"mappings":"AAAA,
|
|
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
|
|
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:
|
|
19
|
+
renderer: Renderer<T>;
|
|
19
20
|
input: Input;
|
|
20
21
|
loadingManager: THREE.LoadingManager;
|
|
21
22
|
scene: Scene;
|
|
22
23
|
audio: GlobalAudio;
|
|
23
|
-
constructor(renderer:
|
|
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,
|
|
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,
|
|
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"}
|
package/dist/systems/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/systems/index.js
CHANGED
|
@@ -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 "./
|
|
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,
|
|
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
|
|
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=
|
|
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"}
|
|
@@ -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 {
|
|
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
|
|
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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/systems/rendering/index.ts"],"names":[],"mappings":"AAAA,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/systems/rendering/index.ts"],"names":[],"mappings":"AAAA,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 +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"}
|