@fps-games/engine 0.0.1-beta.4 → 0.0.1-beta.5
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/babylon/scene-renderer.d.ts +20 -0
- package/dist/babylon/scene-renderer.d.ts.map +1 -0
- package/dist/babylon/scene-renderer.js +60 -0
- package/dist/babylon/scene-renderer.js.map +1 -0
- package/dist/babylon.d.ts +1 -0
- package/dist/babylon.d.ts.map +1 -1
- package/dist/babylon.js +1 -0
- package/dist/babylon.js.map +1 -1
- package/dist/build-info.json +4 -4
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Scene } from '@babylonjs/core/scene.js';
|
|
2
|
+
export type FpsBabylonNextFrameScheduler = (callback: () => void) => void;
|
|
3
|
+
export interface CreateFpsBabylonSceneRendererOptions {
|
|
4
|
+
readonly scene: Scene;
|
|
5
|
+
readonly scheduleNextFrame?: FpsBabylonNextFrameScheduler;
|
|
6
|
+
}
|
|
7
|
+
export interface FpsBabylonSceneRenderer {
|
|
8
|
+
render(): void;
|
|
9
|
+
renderOnce(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates a non-owning Babylon Scene renderer shared by the continuous frame
|
|
13
|
+
* loop and one-shot warm-up paths.
|
|
14
|
+
*
|
|
15
|
+
* Project composition still decides when Gameplay updates run and when a
|
|
16
|
+
* frame is rendered. This resource does not create a render loop and does not
|
|
17
|
+
* own or dispose the Scene.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createFpsBabylonSceneRenderer(options: CreateFpsBabylonSceneRendererOptions): FpsBabylonSceneRenderer;
|
|
20
|
+
//# sourceMappingURL=scene-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-renderer.d.ts","sourceRoot":"","sources":["../../src/babylon/scene-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,MAAM,MAAM,4BAA4B,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAE1E,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,4BAA4B,CAAC;CAC3D;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,IAAI,IAAI,CAAC;IACf,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,oCAAoC,GAC5C,uBAAuB,CAezB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a non-owning Babylon Scene renderer shared by the continuous frame
|
|
3
|
+
* loop and one-shot warm-up paths.
|
|
4
|
+
*
|
|
5
|
+
* Project composition still decides when Gameplay updates run and when a
|
|
6
|
+
* frame is rendered. This resource does not create a render loop and does not
|
|
7
|
+
* own or dispose the Scene.
|
|
8
|
+
*/
|
|
9
|
+
export function createFpsBabylonSceneRenderer(options) {
|
|
10
|
+
assertOptions(options);
|
|
11
|
+
const scheduleNextFrame = options.scheduleNextFrame ?? scheduleHostNextFrame;
|
|
12
|
+
const render = () => {
|
|
13
|
+
options.scene.render();
|
|
14
|
+
};
|
|
15
|
+
return Object.freeze({
|
|
16
|
+
render,
|
|
17
|
+
async renderOnce() {
|
|
18
|
+
await options.scene.whenReadyAsync(false);
|
|
19
|
+
await waitForNextFrame(scheduleNextFrame);
|
|
20
|
+
render();
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function assertOptions(options) {
|
|
25
|
+
if (!options || typeof options !== 'object') {
|
|
26
|
+
throw new Error('Babylon Scene Renderer options are required.');
|
|
27
|
+
}
|
|
28
|
+
if (!options.scene
|
|
29
|
+
|| typeof options.scene.render !== 'function'
|
|
30
|
+
|| typeof options.scene.whenReadyAsync !== 'function') {
|
|
31
|
+
throw new Error('Babylon Scene Renderer requires a Scene.');
|
|
32
|
+
}
|
|
33
|
+
if (options.scheduleNextFrame !== undefined
|
|
34
|
+
&& typeof options.scheduleNextFrame !== 'function') {
|
|
35
|
+
throw new Error('Babylon Scene Renderer scheduleNextFrame must be a function.');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function waitForNextFrame(schedule) {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
try {
|
|
41
|
+
schedule(resolve);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
reject(error);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function scheduleHostNextFrame(callback) {
|
|
49
|
+
const host = globalThis;
|
|
50
|
+
if (typeof host.requestAnimationFrame === 'function') {
|
|
51
|
+
host.requestAnimationFrame(callback);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (typeof host.setTimeout === 'function') {
|
|
55
|
+
host.setTimeout(callback, 0);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
void Promise.resolve().then(callback);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=scene-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-renderer.js","sourceRoot":"","sources":["../../src/babylon/scene-renderer.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAA6C;IAE7C,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,qBAAqB,CAAC;IAC7E,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM;QACN,KAAK,CAAC,UAAU;YACd,MAAM,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;YAC1C,MAAM,EAAE,CAAC;QACX,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,OAA6C;IAClE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK;WACb,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU;WAC1C,OAAO,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS;WACtC,OAAO,OAAO,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAsC;IAC9D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAoB;IACjD,MAAM,IAAI,GAAG,UAGZ,CAAC;IACF,IAAI,OAAO,IAAI,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;QACrD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;IACD,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC"}
|
package/dist/babylon.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const ENGINE_BABYLON_SUBPATH = "@fps-games/engine/babylon";
|
|
2
2
|
export { createFpsBabylonFramePump, type CreateFpsBabylonFramePumpOptions, type FpsBabylonFramePump, } from './babylon/frame-pump.js';
|
|
3
|
+
export { createFpsBabylonSceneRenderer, type CreateFpsBabylonSceneRendererOptions, type FpsBabylonNextFrameScheduler, type FpsBabylonSceneRenderer, } from './babylon/scene-renderer.js';
|
|
3
4
|
export { applyFpsBabylonCameraProjection, createFpsBabylonCameraResource, resizeFpsBabylonCameraProjection, type CreateFpsBabylonCameraResourceOptions, type FpsBabylonCameraRegistration, type FpsBabylonCameraResource, } from './babylon/camera.js';
|
|
4
5
|
export { createFpsBabylonLightingController, type FpsBabylonLightingApplyResult, type FpsBabylonLightingController, type FpsBabylonLightingMutation, type FpsBabylonRuntimeLight, } from './babylon/lighting-controller.js';
|
|
5
6
|
//# sourceMappingURL=babylon.d.ts.map
|
package/dist/babylon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babylon.d.ts","sourceRoot":"","sources":["../src/babylon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAElE,OAAO,EACL,yBAAyB,EACzB,KAAK,gCAAgC,EACrC,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,EAC9B,gCAAgC,EAChC,KAAK,qCAAqC,EAC1C,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kCAAkC,EAClC,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,GAC5B,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"babylon.d.ts","sourceRoot":"","sources":["../src/babylon.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAElE,OAAO,EACL,yBAAyB,EACzB,KAAK,gCAAgC,EACrC,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,6BAA6B,EAC7B,KAAK,oCAAoC,EACzC,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,GAC7B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,EAC9B,gCAAgC,EAChC,KAAK,qCAAqC,EAC1C,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kCAAkC,EAClC,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,GAC5B,MAAM,kCAAkC,CAAC"}
|
package/dist/babylon.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const ENGINE_BABYLON_SUBPATH = '@fps-games/engine/babylon';
|
|
2
2
|
export { createFpsBabylonFramePump, } from './babylon/frame-pump.js';
|
|
3
|
+
export { createFpsBabylonSceneRenderer, } from './babylon/scene-renderer.js';
|
|
3
4
|
export { applyFpsBabylonCameraProjection, createFpsBabylonCameraResource, resizeFpsBabylonCameraProjection, } from './babylon/camera.js';
|
|
4
5
|
export { createFpsBabylonLightingController, } from './babylon/lighting-controller.js';
|
|
5
6
|
//# sourceMappingURL=babylon.js.map
|
package/dist/babylon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babylon.js","sourceRoot":"","sources":["../src/babylon.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAElE,OAAO,EACL,yBAAyB,GAG1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,EAC9B,gCAAgC,GAIjC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kCAAkC,GAKnC,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"babylon.js","sourceRoot":"","sources":["../src/babylon.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAElE,OAAO,EACL,yBAAyB,GAG1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,6BAA6B,GAI9B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,EAC9B,gCAAgC,GAIjC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,kCAAkC,GAKnC,MAAM,kCAAkC,CAAC"}
|
package/dist/build-info.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"packageName": "@fps-games/engine",
|
|
4
|
-
"version": "0.0.1-beta.
|
|
5
|
-
"gitSha": "
|
|
6
|
-
"distHash": "
|
|
7
|
-
"cacheKey": "0.0.1-beta.
|
|
4
|
+
"version": "0.0.1-beta.5",
|
|
5
|
+
"gitSha": "34938b614fc42a6e355a593ea5a7027bbe66d084",
|
|
6
|
+
"distHash": "85346472fcce6e7e77f98a2cff925ab2e96d0eeecaf2fdd6a07f568ec29a1a8a",
|
|
7
|
+
"cacheKey": "0.0.1-beta.5-85346472fcce"
|
|
8
8
|
}
|