@jolly-pixel/runtime 1.0.0 → 1.1.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/dist/Player.d.ts CHANGED
@@ -11,16 +11,13 @@ export interface PlayerOptions {
11
11
  export declare class Player {
12
12
  #private;
13
13
  gameInstance: Systems.GameInstance;
14
+ loop: Systems.FixedTimeStep;
14
15
  canvas: HTMLCanvasElement;
15
16
  stats?: Stats;
16
- clock: THREE.Clock;
17
17
  manager: THREE.LoadingManager;
18
- framesPerSecond: number;
19
18
  constructor(canvas: HTMLCanvasElement, options?: PlayerOptions);
20
19
  get running(): boolean;
21
20
  start(): void;
22
21
  stop(): void;
23
- setFps(framesPerSecond: number | undefined): void;
24
- tick: () => void;
25
22
  }
26
23
  //# sourceMappingURL=Player.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,OAAO,EACR,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,qBAAa,MAAM;;IACjB,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,cAAqB;IAC1B,OAAO,uBAA8B;IAErC,eAAe,SAAM;gBAMnB,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,aAAkB;IAyB7B,IAAI,OAAO,YAEV;IAED,KAAK;IAiBL,IAAI;IAaJ,MAAM,CACJ,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,IAAI;IAYP,IAAI,aAkBF;CACH"}
1
+ {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,qBAAa,MAAM;;IACjB,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC;IACnC,IAAI,wBAA+B;IAEnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,uBAA8B;gBAKnC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,aAAkB;IAyB7B,IAAI,OAAO,YAEV;IAED,KAAK;IAiCL,IAAI;CAaL"}
package/dist/Player.js CHANGED
@@ -1,16 +1,15 @@
1
1
  // Import Third-party Dependencies
2
2
  import Stats from "stats.js";
3
3
  import * as THREE from "three";
4
+ // Import Internal Dependencies
4
5
  import { Systems } from "@jolly-pixel/engine";
5
6
  export class Player {
6
7
  gameInstance;
8
+ loop = new Systems.FixedTimeStep();
7
9
  canvas;
8
10
  stats;
9
- clock = new THREE.Clock();
10
11
  manager = new THREE.LoadingManager();
11
- framesPerSecond = 60;
12
12
  #isRunning = false;
13
- #deltaTime = 0;
14
13
  constructor(canvas, options = {}) {
15
14
  if (!canvas) {
16
15
  throw new Error("Canvas element is required to create a Runtime instance.");
@@ -43,39 +42,35 @@ export class Player {
43
42
  document.body.appendChild(this.stats.dom);
44
43
  }
45
44
  this.gameInstance.connect();
45
+ this.loop.start();
46
46
  const renderer = this.gameInstance.renderer.getSource();
47
- renderer.setAnimationLoop(this.tick);
47
+ renderer.setAnimationLoop(() => {
48
+ this.loop.tick({
49
+ fixedUpdate: (fixedDelta) => {
50
+ // fixedDelta is in ms, but gameInstance.update expects seconds
51
+ const exit = this.gameInstance.update(fixedDelta / 1000);
52
+ if (exit) {
53
+ this.stop();
54
+ }
55
+ },
56
+ update: (_interpolation, _delta) => {
57
+ this.stats?.begin();
58
+ this.gameInstance.render();
59
+ this.stats?.end();
60
+ }
61
+ });
62
+ });
48
63
  }
49
64
  stop() {
50
65
  if (!this.#isRunning) {
51
66
  return;
52
67
  }
53
68
  this.#isRunning = false;
69
+ this.loop.stop();
54
70
  this.gameInstance.input.exited = true;
55
71
  const renderer = this.gameInstance.renderer.getSource();
56
72
  renderer.setAnimationLoop(null);
57
73
  this.gameInstance.disconnect();
58
74
  }
59
- setFps(framesPerSecond) {
60
- if (!framesPerSecond) {
61
- return;
62
- }
63
- this.framesPerSecond = THREE.MathUtils.clamp(framesPerSecond, 1, 60);
64
- }
65
- tick = () => {
66
- this.#deltaTime += this.clock.getDelta();
67
- const interval = 1 / this.framesPerSecond;
68
- if (this.#deltaTime >= interval) {
69
- this.stats?.begin();
70
- const exit = this.gameInstance.update(this.#deltaTime);
71
- if (exit) {
72
- this.stop();
73
- return;
74
- }
75
- this.gameInstance.render();
76
- this.#deltaTime %= interval;
77
- this.stats?.end();
78
- }
79
- };
80
75
  }
81
76
  //# sourceMappingURL=Player.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Player.js","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Player.js","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"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"}
@@ -21,301 +21,301 @@ const kVelocityThreshold = 0.1;
21
21
  export class Loading extends LitElement {
22
22
  #lastProgressUpdate = 0;
23
23
  #progressVelocity = 0;
24
- static styles = css `
25
- :host {
26
- display: block;
27
- transition: opacity 0.5s ease-out;
28
- }
29
-
30
- :host([completed]) {
31
- opacity: 0;
32
- }
33
-
34
- #loading {
35
- position: absolute;
36
- top: 0;
37
- bottom: 0;
38
- left: 0;
39
- right: 0;
40
- color: #444;
41
- font-size: 24px;
42
- font-family: sans-serif;
43
- display: flex;
44
- flex-flow: column;
45
- align-items: center;
46
- justify-content: center;
47
- background: #eee;
48
- }
49
-
50
- :host(:not([started])) #loading {
51
- opacity: 0;
52
- }
53
-
54
- #loading a {
55
- transition: opacity 0.3s ease-out;
56
- position: relative;
57
- text-decoration: none;
58
- color: inherit;
59
- display: flex;
60
- flex-direction: column;
61
- }
62
-
63
- #loading a > * {
64
- pointer-events: none;
65
- }
66
-
67
- #loading img {
68
- width: 480px;
69
- height: 280px;
70
- max-width: 100%;
71
- opacity: 0;
72
- transform: translateY(-20px) scale(0.95);
73
- animation: logo-fade-in 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
74
- animation-delay: 0.2s;
75
- }
76
-
77
- #loading img.hidden {
78
- display: none;
79
- }
80
-
81
- @keyframes logo-fade-in {
82
- 0% {
83
- opacity: 0;
84
- transform: translateY(-20px) scale(0.95);
85
- }
86
- 100% {
87
- opacity: 1;
88
- transform: translateY(0) scale(1);
89
- }
90
- }
91
-
92
- :host([completed]) #loading img {
93
- animation: logo-fade-out 0.4s ease-out forwards;
94
- }
95
-
96
- @keyframes logo-fade-out {
97
- 0% {
98
- opacity: 1;
99
- transform: translateY(0) scale(1);
100
- }
101
- 100% {
102
- opacity: 0;
103
- transform: translateY(-10px) scale(0.98);
104
- }
105
- }
106
-
107
- #loading .asset {
108
- margin-top: 20px;
109
- text-align: center;
110
- font-size: 13px;
111
- font-weight: 500;
112
- text-transform: uppercase;
113
- letter-spacing: 2px;
114
- color: #282e38ff;
115
- opacity: 0;
116
- animation: fade-slide-in 0.6s ease-out forwards;
117
- animation-delay: 0.5s;
118
- padding: 0 2em;
119
- max-width: 100%;
120
- overflow: hidden;
121
- text-overflow: ellipsis;
122
- white-space: nowrap;
123
-
124
- /* Transition douce lors du changement d'asset */
125
- transition: opacity 0.2s ease-out;
126
- }
127
-
128
- /* Effet subtil de "pulse" pendant le chargement */
129
- @keyframes fade-slide-in {
130
- 0% {
131
- opacity: 0;
132
- transform: translateY(10px);
133
- }
134
- 100% {
135
- opacity: 0.8;
136
- transform: translateY(0);
137
- }
138
- }
139
-
140
- #loading .progress-container {
141
- width: 100%;
142
- height: 6px;
143
- background: linear-gradient(
144
- 180deg,
145
- #b8bfb0 0%,
146
- #d0d4c3 50%,
147
- #b8bfb0 100%
148
- );
149
- overflow: hidden;
150
- position: relative;
151
- border-radius: 3px;
152
- box-shadow:
153
- inset 0 1px 2px rgba(0, 0, 0, 0.1),
154
- 0 1px 0 rgba(255, 255, 255, 0.5);
155
- opacity: 0;
156
- animation: fade-slide-in 0.6s ease-out forwards;
157
- animation-delay: 0.7s;
158
- transform: translateZ(0);
159
- backface-visibility: hidden;
160
- }
161
-
162
- #loading .progress-bar {
163
- position: absolute;
164
- top: 0;
165
- left: 0;
166
- width: 100%;
167
- height: 100%;
168
- background: linear-gradient(
169
- 90deg,
170
- #2a5d8f 0%,
171
- #3E7CB8 50%,
172
- #4a8fd8 100%
173
- );
174
- transform: scaleX(var(--progress, 0));
175
- transform-origin: left center;
176
- transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
177
- will-change: transform;
178
- box-shadow:
179
- 0 0 10px rgba(62, 124, 184, 0.5),
180
- 0 0 20px rgba(62, 124, 184, 0.3),
181
- inset 0 1px 0 rgba(255, 255, 255, 0.3);
182
- animation: progress-pulse 1.5s ease-in-out infinite;
183
- backface-visibility: hidden;
184
- }
185
-
186
- #loading .progress-bar.speed-blur {
187
- animation: speed-blur 0.3s ease;
188
- }
189
-
190
- #loading .progress-bar::before {
191
- content: "";
192
- position: absolute;
193
- top: 0;
194
- left: 0;
195
- width: 100%;
196
- height: 100%;
197
- background: linear-gradient(
198
- 90deg,
199
- transparent 0%,
200
- rgba(255, 255, 255, 0.15) 30%,
201
- rgba(255, 255, 255, 0.4) 50%,
202
- rgba(255, 255, 255, 0.15) 70%,
203
- transparent 100%
204
- );
205
- animation: shimmer 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;
206
- }
207
-
208
- #loading .progress-bar::after {
209
- content: "";
210
- position: absolute;
211
- top: 0;
212
- left: 0;
213
- width: 100%;
214
- height: 100%;
215
- background: linear-gradient(
216
- 180deg,
217
- rgba(255, 255, 255, 0.2) 0%,
218
- transparent 50%,
219
- rgba(0, 0, 0, 0.1) 100%
220
- );
221
- }
222
-
223
- :host([completed]) .progress-bar {
224
- animation: none;
225
- box-shadow:
226
- 0 0 10px rgba(62, 124, 184, 0.5),
227
- 0 0 20px rgba(62, 124, 184, 0.3),
228
- inset 0 1px 0 rgba(255, 255, 255, 0.3);
229
- }
230
-
231
- :host([completed]) .progress-bar::before {
232
- animation: none;
233
- }
234
-
235
- @keyframes shimmer {
236
- 0% {
237
- transform: translateX(-100%);
238
- }
239
- 100% {
240
- transform: translateX(100%);
241
- }
242
- }
243
-
244
- @keyframes progress-pulse {
245
- 0%, 100% {
246
- box-shadow:
247
- 0 0 10px rgba(62, 124, 184, 0.5),
248
- 0 0 20px rgba(62, 124, 184, 0.3),
249
- inset 0 1px 0 rgba(255, 255, 255, 0.3);
250
- }
251
- 50% {
252
- box-shadow:
253
- 0 0 15px rgba(62, 124, 184, 0.7),
254
- 0 0 30px rgba(62, 124, 184, 0.5),
255
- inset 0 1px 0 rgba(255, 255, 255, 0.4);
256
- }
257
- }
258
-
259
- #loading div.error {
260
- text-align: center;
261
- padding: 0 2em;
262
- font-size: 18px;
263
- font-weight: bold;
264
- letter-spacing: 0.5px;
265
- font-family: Monaco, "DejaVu Sans Mono", "Lucida Console", "Andale Mono", monospace;
266
- color: #BF360C;
267
- text-transform: uppercase;
268
- }
269
-
270
- #loading pre.error {
271
- text-align: left;
272
- overflow: auto;
273
- padding: 1em;
274
- margin-top: 1em;
275
- background: #CFD8DC;
276
- color: #182024ff;
277
- font-size: 15px;
278
- border-radius: 4px;
279
- }
280
-
281
- /* Media queries pour mobile */
282
- @media (max-width: 600px) {
283
- #loading {
284
- padding: 15px;
285
- }
286
-
287
- #loading .asset {
288
- font-size: 11px;
289
- letter-spacing: 1px;
290
- margin-top: 15px;
291
- }
292
-
293
- #loading div.error {
294
- font-size: 16px;
295
- padding: 0 1em;
296
- }
297
-
298
- #loading pre.error {
299
- font-size: 13px;
300
- padding: 0.8em;
301
- }
302
- }
303
-
304
- @media (max-width: 400px) {
305
- #loading {
306
- padding: 10px;
307
- }
308
-
309
- #loading .asset {
310
- font-size: 10px;
311
- letter-spacing: 0.5px;
312
- margin-top: 12px;
313
- }
314
-
315
- #loading .progress-container {
316
- height: 5px;
317
- }
318
- }
24
+ static styles = css `
25
+ :host {
26
+ display: block;
27
+ transition: opacity 0.5s ease-out;
28
+ }
29
+
30
+ :host([completed]) {
31
+ opacity: 0;
32
+ }
33
+
34
+ #loading {
35
+ position: absolute;
36
+ top: 0;
37
+ bottom: 0;
38
+ left: 0;
39
+ right: 0;
40
+ color: #444;
41
+ font-size: 24px;
42
+ font-family: sans-serif;
43
+ display: flex;
44
+ flex-flow: column;
45
+ align-items: center;
46
+ justify-content: center;
47
+ background: #eee;
48
+ }
49
+
50
+ :host(:not([started])) #loading {
51
+ opacity: 0;
52
+ }
53
+
54
+ #loading a {
55
+ transition: opacity 0.3s ease-out;
56
+ position: relative;
57
+ text-decoration: none;
58
+ color: inherit;
59
+ display: flex;
60
+ flex-direction: column;
61
+ }
62
+
63
+ #loading a > * {
64
+ pointer-events: none;
65
+ }
66
+
67
+ #loading img {
68
+ width: 480px;
69
+ height: 280px;
70
+ max-width: 100%;
71
+ opacity: 0;
72
+ transform: translateY(-20px) scale(0.95);
73
+ animation: logo-fade-in 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
74
+ animation-delay: 0.2s;
75
+ }
76
+
77
+ #loading img.hidden {
78
+ display: none;
79
+ }
80
+
81
+ @keyframes logo-fade-in {
82
+ 0% {
83
+ opacity: 0;
84
+ transform: translateY(-20px) scale(0.95);
85
+ }
86
+ 100% {
87
+ opacity: 1;
88
+ transform: translateY(0) scale(1);
89
+ }
90
+ }
91
+
92
+ :host([completed]) #loading img {
93
+ animation: logo-fade-out 0.4s ease-out forwards;
94
+ }
95
+
96
+ @keyframes logo-fade-out {
97
+ 0% {
98
+ opacity: 1;
99
+ transform: translateY(0) scale(1);
100
+ }
101
+ 100% {
102
+ opacity: 0;
103
+ transform: translateY(-10px) scale(0.98);
104
+ }
105
+ }
106
+
107
+ #loading .asset {
108
+ margin-top: 20px;
109
+ text-align: center;
110
+ font-size: 13px;
111
+ font-weight: 500;
112
+ text-transform: uppercase;
113
+ letter-spacing: 2px;
114
+ color: #282e38ff;
115
+ opacity: 0;
116
+ animation: fade-slide-in 0.6s ease-out forwards;
117
+ animation-delay: 0.5s;
118
+ padding: 0 2em;
119
+ max-width: 100%;
120
+ overflow: hidden;
121
+ text-overflow: ellipsis;
122
+ white-space: nowrap;
123
+
124
+ /* Transition douce lors du changement d'asset */
125
+ transition: opacity 0.2s ease-out;
126
+ }
127
+
128
+ /* Effet subtil de "pulse" pendant le chargement */
129
+ @keyframes fade-slide-in {
130
+ 0% {
131
+ opacity: 0;
132
+ transform: translateY(10px);
133
+ }
134
+ 100% {
135
+ opacity: 0.8;
136
+ transform: translateY(0);
137
+ }
138
+ }
139
+
140
+ #loading .progress-container {
141
+ width: 100%;
142
+ height: 6px;
143
+ background: linear-gradient(
144
+ 180deg,
145
+ #b8bfb0 0%,
146
+ #d0d4c3 50%,
147
+ #b8bfb0 100%
148
+ );
149
+ overflow: hidden;
150
+ position: relative;
151
+ border-radius: 3px;
152
+ box-shadow:
153
+ inset 0 1px 2px rgba(0, 0, 0, 0.1),
154
+ 0 1px 0 rgba(255, 255, 255, 0.5);
155
+ opacity: 0;
156
+ animation: fade-slide-in 0.6s ease-out forwards;
157
+ animation-delay: 0.7s;
158
+ transform: translateZ(0);
159
+ backface-visibility: hidden;
160
+ }
161
+
162
+ #loading .progress-bar {
163
+ position: absolute;
164
+ top: 0;
165
+ left: 0;
166
+ width: 100%;
167
+ height: 100%;
168
+ background: linear-gradient(
169
+ 90deg,
170
+ #2a5d8f 0%,
171
+ #3E7CB8 50%,
172
+ #4a8fd8 100%
173
+ );
174
+ transform: scaleX(var(--progress, 0));
175
+ transform-origin: left center;
176
+ transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
177
+ will-change: transform;
178
+ box-shadow:
179
+ 0 0 10px rgba(62, 124, 184, 0.5),
180
+ 0 0 20px rgba(62, 124, 184, 0.3),
181
+ inset 0 1px 0 rgba(255, 255, 255, 0.3);
182
+ animation: progress-pulse 1.5s ease-in-out infinite;
183
+ backface-visibility: hidden;
184
+ }
185
+
186
+ #loading .progress-bar.speed-blur {
187
+ animation: speed-blur 0.3s ease;
188
+ }
189
+
190
+ #loading .progress-bar::before {
191
+ content: "";
192
+ position: absolute;
193
+ top: 0;
194
+ left: 0;
195
+ width: 100%;
196
+ height: 100%;
197
+ background: linear-gradient(
198
+ 90deg,
199
+ transparent 0%,
200
+ rgba(255, 255, 255, 0.15) 30%,
201
+ rgba(255, 255, 255, 0.4) 50%,
202
+ rgba(255, 255, 255, 0.15) 70%,
203
+ transparent 100%
204
+ );
205
+ animation: shimmer 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;
206
+ }
207
+
208
+ #loading .progress-bar::after {
209
+ content: "";
210
+ position: absolute;
211
+ top: 0;
212
+ left: 0;
213
+ width: 100%;
214
+ height: 100%;
215
+ background: linear-gradient(
216
+ 180deg,
217
+ rgba(255, 255, 255, 0.2) 0%,
218
+ transparent 50%,
219
+ rgba(0, 0, 0, 0.1) 100%
220
+ );
221
+ }
222
+
223
+ :host([completed]) .progress-bar {
224
+ animation: none;
225
+ box-shadow:
226
+ 0 0 10px rgba(62, 124, 184, 0.5),
227
+ 0 0 20px rgba(62, 124, 184, 0.3),
228
+ inset 0 1px 0 rgba(255, 255, 255, 0.3);
229
+ }
230
+
231
+ :host([completed]) .progress-bar::before {
232
+ animation: none;
233
+ }
234
+
235
+ @keyframes shimmer {
236
+ 0% {
237
+ transform: translateX(-100%);
238
+ }
239
+ 100% {
240
+ transform: translateX(100%);
241
+ }
242
+ }
243
+
244
+ @keyframes progress-pulse {
245
+ 0%, 100% {
246
+ box-shadow:
247
+ 0 0 10px rgba(62, 124, 184, 0.5),
248
+ 0 0 20px rgba(62, 124, 184, 0.3),
249
+ inset 0 1px 0 rgba(255, 255, 255, 0.3);
250
+ }
251
+ 50% {
252
+ box-shadow:
253
+ 0 0 15px rgba(62, 124, 184, 0.7),
254
+ 0 0 30px rgba(62, 124, 184, 0.5),
255
+ inset 0 1px 0 rgba(255, 255, 255, 0.4);
256
+ }
257
+ }
258
+
259
+ #loading div.error {
260
+ text-align: center;
261
+ padding: 0 2em;
262
+ font-size: 18px;
263
+ font-weight: bold;
264
+ letter-spacing: 0.5px;
265
+ font-family: Monaco, "DejaVu Sans Mono", "Lucida Console", "Andale Mono", monospace;
266
+ color: #BF360C;
267
+ text-transform: uppercase;
268
+ }
269
+
270
+ #loading pre.error {
271
+ text-align: left;
272
+ overflow: auto;
273
+ padding: 1em;
274
+ margin-top: 1em;
275
+ background: #CFD8DC;
276
+ color: #182024ff;
277
+ font-size: 15px;
278
+ border-radius: 4px;
279
+ }
280
+
281
+ /* Media queries pour mobile */
282
+ @media (max-width: 600px) {
283
+ #loading {
284
+ padding: 15px;
285
+ }
286
+
287
+ #loading .asset {
288
+ font-size: 11px;
289
+ letter-spacing: 1px;
290
+ margin-top: 15px;
291
+ }
292
+
293
+ #loading div.error {
294
+ font-size: 16px;
295
+ padding: 0 1em;
296
+ }
297
+
298
+ #loading pre.error {
299
+ font-size: 13px;
300
+ padding: 0.8em;
301
+ }
302
+ }
303
+
304
+ @media (max-width: 400px) {
305
+ #loading {
306
+ padding: 10px;
307
+ }
308
+
309
+ #loading .asset {
310
+ font-size: 10px;
311
+ letter-spacing: 0.5px;
312
+ margin-top: 12px;
313
+ }
314
+
315
+ #loading .progress-container {
316
+ height: 5px;
317
+ }
318
+ }
319
319
  `;
320
320
  constructor() {
321
321
  super();
@@ -391,25 +391,25 @@ export class Loading extends LitElement {
391
391
  const imageClasses = classMap({
392
392
  hidden: this.imageError
393
393
  });
394
- return html `
395
- <div id="loading">
396
- ${this.errorMessage ? html `
397
- <div class="error">${this.errorMessage}</div>
398
- <pre class="error">${this.errorStack}</pre>
399
- ` : html `
400
- <a href="https://github.com/JollyPixel" target="_blank">
401
- <img
402
- class="${imageClasses}"
403
- src="./images/jollypixel-full-logo-min.svg"
404
- @error="${this.#handleImageError}"
405
- >
406
- <p class="asset">${this.assetName}</p>
407
- <div class="progress-container">
408
- <div class="${progressBarClasses}"></div>
409
- </div>
410
- </a>
411
- `}
412
- </div>
394
+ return html `
395
+ <div id="loading">
396
+ ${this.errorMessage ? html `
397
+ <div class="error">${this.errorMessage}</div>
398
+ <pre class="error">${this.errorStack}</pre>
399
+ ` : html `
400
+ <a href="https://github.com/JollyPixel" target="_blank">
401
+ <img
402
+ class="${imageClasses}"
403
+ src="./images/jollypixel-full-logo-min.svg"
404
+ @error="${this.#handleImageError}"
405
+ >
406
+ <p class="asset">${this.assetName}</p>
407
+ <div class="progress-container">
408
+ <div class="${progressBarClasses}"></div>
409
+ </div>
410
+ </a>
411
+ `}
412
+ </div>
413
413
  `;
414
414
  }
415
415
  }
package/dist/index.d.ts CHANGED
@@ -1,5 +1,9 @@
1
1
  import { Player, type PlayerOptions } from "./Player.ts";
2
2
  export interface LoadPlayerOptions {
3
+ /**
4
+ * @default 850
5
+ * Minimum delay (ms) before starting asset loading. Gives the loading UI time to render.
6
+ */
3
7
  loadingDelay?: number;
4
8
  }
5
9
  export declare function loadPlayer(player: Player, options?: LoadPlayerOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,iBAoFhC;AAED,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,iBAoFhC;AAED,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -41,7 +41,7 @@ export async function loadPlayer(player, options = {}) {
41
41
  await timers.setTimeout(loadingDelay);
42
42
  }
43
43
  const { fps, isMobile = false, tier } = await gpuTierPromise;
44
- player.setFps(fps);
44
+ player.loop.setFps(fps ?? 60);
45
45
  player.gameInstance.renderer.getSource().setPixelRatio(getDevicePixelRatio(isMobile));
46
46
  if (tier < 1) {
47
47
  throw new Error("GPU is not powerful enough to run this game");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,+BAA+B;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,EAAE,MAAM,EAAsB,MAAM,aAAa,CAAC;AAMzD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,UAA6B,EAAE;IAE/B,MAAM,EAAE,YAAY,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAEvC,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;IAEpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,sBAAsB,CAAC;IAExD,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAC7D,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,gBAAgB,GAAG,cAAyB,CAAC;IACnD,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAEzB,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,MAAM,sBAAsB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACrD,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;YAC/C,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAE5C,IAAI,MAAM,IAAI,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;gBACxC,eAAe,GAAG,IAAI,CAAC;gBAEvB,mEAAmE;gBACnE,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,8DAA8D;IAC9D,4CAA4C;IAC5C,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;QACnD,KAAK,CAAC,cAAc,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,wFAAwF;IACxF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,EACJ,GAAG,EACH,QAAQ,GAAG,KAAK,EAChB,IAAI,EACL,GAAG,MAAM,cAAc,CAAC;QAEzB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,aAAa,CACpD,mBAAmB,CAAC,QAAQ,CAAC,CAC9B,CAAC;QACF,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAE5C,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QACvD,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAC7B,OAAO,EACP;gBACE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;aAC1D,CACF,CAAC;YACF,MAAM,sBAAsB,CAAC;QAC/B,CAAC;QAED,MAAM,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAClC,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAU,EAAE,CAAC;QAClB,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,OAAO,EAAE,MAAM,EAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@jolly-pixel/runtime",
3
- "version": "1.0.0",
3
+ "description": "Jolly Pixel Runtime for web browsers and electron applications.",
4
+ "version": "1.1.0",
4
5
  "type": "module",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
@@ -13,7 +14,7 @@
13
14
  "publishConfig": {
14
15
  "registry": "https://registry.npmjs.org",
15
16
  "access": "public",
16
- "provenance": false
17
+ "provenance": true
17
18
  },
18
19
  "repository": {
19
20
  "type": "git",
@@ -31,7 +32,7 @@
31
32
  "author": "GENTILHOMME Thomas <gentilhomme.thomas@gmail.com>",
32
33
  "license": "MIT",
33
34
  "dependencies": {
34
- "@jolly-pixel/engine": "^1.0.0",
35
+ "@jolly-pixel/engine": "^1.2.0",
35
36
  "detect-gpu": "^5.0.70",
36
37
  "lit": "^3.3.1",
37
38
  "stats.js": "^0.17.0",