@fps-games/engine 0.0.1-beta.4 → 0.0.1-beta.8

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 (298) hide show
  1. package/dist/asset-resource.d.ts +39 -0
  2. package/dist/asset-resource.d.ts.map +1 -0
  3. package/dist/asset-resource.js +121 -0
  4. package/dist/asset-resource.js.map +1 -0
  5. package/dist/babylon/game-world-plugin-lifecycle.d.ts +26 -0
  6. package/dist/babylon/game-world-plugin-lifecycle.d.ts.map +1 -0
  7. package/dist/babylon/game-world-plugin-lifecycle.js +257 -0
  8. package/dist/babylon/game-world-plugin-lifecycle.js.map +1 -0
  9. package/dist/babylon/plugin-contract.d.ts +15 -0
  10. package/dist/babylon/plugin-contract.d.ts.map +1 -0
  11. package/dist/babylon/plugin-contract.js +9 -0
  12. package/dist/babylon/plugin-contract.js.map +1 -0
  13. package/dist/babylon/renderer/brdf-texture-settlement.d.ts +7 -0
  14. package/dist/babylon/renderer/brdf-texture-settlement.d.ts.map +1 -0
  15. package/dist/babylon/renderer/brdf-texture-settlement.js +29 -0
  16. package/dist/babylon/renderer/brdf-texture-settlement.js.map +1 -0
  17. package/dist/babylon/renderer/environment/environment-texture-controller.d.ts +7 -0
  18. package/dist/babylon/renderer/environment/environment-texture-controller.d.ts.map +1 -0
  19. package/dist/babylon/renderer/environment/environment-texture-controller.js +357 -0
  20. package/dist/babylon/renderer/environment/environment-texture-controller.js.map +1 -0
  21. package/dist/babylon/renderer/environment/index.d.ts +4 -0
  22. package/dist/babylon/renderer/environment/index.d.ts.map +1 -0
  23. package/dist/babylon/renderer/environment/index.js +4 -0
  24. package/dist/babylon/renderer/environment/index.js.map +1 -0
  25. package/dist/babylon/renderer/environment/profile.d.ts +3 -0
  26. package/dist/babylon/renderer/environment/profile.d.ts.map +1 -0
  27. package/dist/babylon/renderer/environment/profile.js +27 -0
  28. package/dist/babylon/renderer/environment/profile.js.map +1 -0
  29. package/dist/babylon/renderer/environment/types.d.ts +24 -0
  30. package/dist/babylon/renderer/environment/types.d.ts.map +1 -0
  31. package/dist/babylon/renderer/environment/types.js +6 -0
  32. package/dist/babylon/renderer/environment/types.js.map +1 -0
  33. package/dist/babylon/renderer/index.d.ts +24 -0
  34. package/dist/babylon/renderer/index.d.ts.map +1 -0
  35. package/dist/babylon/renderer/index.js +24 -0
  36. package/dist/babylon/renderer/index.js.map +1 -0
  37. package/dist/babylon/renderer/lighting/directional-light-angles.d.ts +17 -0
  38. package/dist/babylon/renderer/lighting/directional-light-angles.d.ts.map +1 -0
  39. package/dist/babylon/renderer/lighting/directional-light-angles.js +67 -0
  40. package/dist/babylon/renderer/lighting/directional-light-angles.js.map +1 -0
  41. package/dist/babylon/renderer/material-owner-candidates.d.ts +19 -0
  42. package/dist/babylon/renderer/material-owner-candidates.d.ts.map +1 -0
  43. package/dist/babylon/renderer/material-owner-candidates.js +212 -0
  44. package/dist/babylon/renderer/material-owner-candidates.js.map +1 -0
  45. package/dist/babylon/renderer/materials/index.d.ts +3 -0
  46. package/dist/babylon/renderer/materials/index.d.ts.map +1 -0
  47. package/dist/babylon/renderer/materials/index.js +3 -0
  48. package/dist/babylon/renderer/materials/index.js.map +1 -0
  49. package/dist/babylon/renderer/materials/material-runtime.d.ts +29 -0
  50. package/dist/babylon/renderer/materials/material-runtime.d.ts.map +1 -0
  51. package/dist/babylon/renderer/materials/material-runtime.js +660 -0
  52. package/dist/babylon/renderer/materials/material-runtime.js.map +1 -0
  53. package/dist/babylon/renderer/materials/material-slot-owner.d.ts +42 -0
  54. package/dist/babylon/renderer/materials/material-slot-owner.d.ts.map +1 -0
  55. package/dist/babylon/renderer/materials/material-slot-owner.js +318 -0
  56. package/dist/babylon/renderer/materials/material-slot-owner.js.map +1 -0
  57. package/dist/babylon/renderer/outlines/babylon-default/apply.d.ts +4 -0
  58. package/dist/babylon/renderer/outlines/babylon-default/apply.d.ts.map +1 -0
  59. package/dist/babylon/renderer/outlines/babylon-default/apply.js +45 -0
  60. package/dist/babylon/renderer/outlines/babylon-default/apply.js.map +1 -0
  61. package/dist/babylon/renderer/outlines/babylon-default/index.d.ts +3 -0
  62. package/dist/babylon/renderer/outlines/babylon-default/index.d.ts.map +1 -0
  63. package/dist/babylon/renderer/outlines/babylon-default/index.js +2 -0
  64. package/dist/babylon/renderer/outlines/babylon-default/index.js.map +1 -0
  65. package/dist/babylon/renderer/outlines/babylon-default/types.d.ts +7 -0
  66. package/dist/babylon/renderer/outlines/babylon-default/types.d.ts.map +1 -0
  67. package/dist/babylon/renderer/outlines/babylon-default/types.js +2 -0
  68. package/dist/babylon/renderer/outlines/babylon-default/types.js.map +1 -0
  69. package/dist/babylon/renderer/outlines/index.d.ts +4 -0
  70. package/dist/babylon/renderer/outlines/index.d.ts.map +1 -0
  71. package/dist/babylon/renderer/outlines/index.js +3 -0
  72. package/dist/babylon/renderer/outlines/index.js.map +1 -0
  73. package/dist/babylon/renderer/outlines/runtime-override.d.ts +36 -0
  74. package/dist/babylon/renderer/outlines/runtime-override.d.ts.map +1 -0
  75. package/dist/babylon/renderer/outlines/runtime-override.js +131 -0
  76. package/dist/babylon/renderer/outlines/runtime-override.js.map +1 -0
  77. package/dist/babylon/renderer/outlines/types.d.ts +7 -0
  78. package/dist/babylon/renderer/outlines/types.d.ts.map +1 -0
  79. package/dist/babylon/renderer/outlines/types.js +2 -0
  80. package/dist/babylon/renderer/outlines/types.js.map +1 -0
  81. package/dist/babylon/renderer/placement/index.d.ts +2 -0
  82. package/dist/babylon/renderer/placement/index.d.ts.map +1 -0
  83. package/dist/babylon/renderer/placement/index.js +2 -0
  84. package/dist/babylon/renderer/placement/index.js.map +1 -0
  85. package/dist/babylon/renderer/placement/runtime-drop-position.d.ts +24 -0
  86. package/dist/babylon/renderer/placement/runtime-drop-position.d.ts.map +1 -0
  87. package/dist/babylon/renderer/placement/runtime-drop-position.js +63 -0
  88. package/dist/babylon/renderer/placement/runtime-drop-position.js.map +1 -0
  89. package/dist/babylon/renderer/post-process/babylon-default-pipeline.d.ts +7 -0
  90. package/dist/babylon/renderer/post-process/babylon-default-pipeline.d.ts.map +1 -0
  91. package/dist/babylon/renderer/post-process/babylon-default-pipeline.js +301 -0
  92. package/dist/babylon/renderer/post-process/babylon-default-pipeline.js.map +1 -0
  93. package/dist/babylon/renderer/post-process/index.d.ts +5 -0
  94. package/dist/babylon/renderer/post-process/index.d.ts.map +1 -0
  95. package/dist/babylon/renderer/post-process/index.js +5 -0
  96. package/dist/babylon/renderer/post-process/index.js.map +1 -0
  97. package/dist/babylon/renderer/post-process/profile.d.ts +5 -0
  98. package/dist/babylon/renderer/post-process/profile.d.ts.map +1 -0
  99. package/dist/babylon/renderer/post-process/profile.js +155 -0
  100. package/dist/babylon/renderer/post-process/profile.js.map +1 -0
  101. package/dist/babylon/renderer/post-process/types.d.ts +81 -0
  102. package/dist/babylon/renderer/post-process/types.d.ts.map +1 -0
  103. package/dist/babylon/renderer/post-process/types.js +24 -0
  104. package/dist/babylon/renderer/post-process/types.js.map +1 -0
  105. package/dist/babylon/renderer/post-process/volume-stack.d.ts +4 -0
  106. package/dist/babylon/renderer/post-process/volume-stack.d.ts.map +1 -0
  107. package/dist/babylon/renderer/post-process/volume-stack.js +105 -0
  108. package/dist/babylon/renderer/post-process/volume-stack.js.map +1 -0
  109. package/dist/babylon/renderer/rendering/image-node.d.ts +35 -0
  110. package/dist/babylon/renderer/rendering/image-node.d.ts.map +1 -0
  111. package/dist/babylon/renderer/rendering/image-node.js +39 -0
  112. package/dist/babylon/renderer/rendering/image-node.js.map +1 -0
  113. package/dist/babylon/renderer/rendering/index.d.ts +3 -0
  114. package/dist/babylon/renderer/rendering/index.d.ts.map +1 -0
  115. package/dist/babylon/renderer/rendering/index.js +3 -0
  116. package/dist/babylon/renderer/rendering/index.js.map +1 -0
  117. package/dist/babylon/renderer/rendering/node-rendering.d.ts +19 -0
  118. package/dist/babylon/renderer/rendering/node-rendering.d.ts.map +1 -0
  119. package/dist/babylon/renderer/rendering/node-rendering.js +66 -0
  120. package/dist/babylon/renderer/rendering/node-rendering.js.map +1 -0
  121. package/dist/babylon/renderer/shadows/blob-shadow-shaders.d.ts +5 -0
  122. package/dist/babylon/renderer/shadows/blob-shadow-shaders.d.ts.map +1 -0
  123. package/dist/babylon/renderer/shadows/blob-shadow-shaders.js +46 -0
  124. package/dist/babylon/renderer/shadows/blob-shadow-shaders.js.map +1 -0
  125. package/dist/babylon/renderer/shadows/blob-shadow-system.d.ts +5 -0
  126. package/dist/babylon/renderer/shadows/blob-shadow-system.d.ts.map +1 -0
  127. package/dist/babylon/renderer/shadows/blob-shadow-system.js +402 -0
  128. package/dist/babylon/renderer/shadows/blob-shadow-system.js.map +1 -0
  129. package/dist/babylon/renderer/shadows/dynamic-shadow-system.d.ts +84 -0
  130. package/dist/babylon/renderer/shadows/dynamic-shadow-system.d.ts.map +1 -0
  131. package/dist/babylon/renderer/shadows/dynamic-shadow-system.js +566 -0
  132. package/dist/babylon/renderer/shadows/dynamic-shadow-system.js.map +1 -0
  133. package/dist/babylon/renderer/shadows/planar-shadow-shaders.d.ts +7 -0
  134. package/dist/babylon/renderer/shadows/planar-shadow-shaders.d.ts.map +1 -0
  135. package/dist/babylon/renderer/shadows/planar-shadow-shaders.js +316 -0
  136. package/dist/babylon/renderer/shadows/planar-shadow-shaders.js.map +1 -0
  137. package/dist/babylon/renderer/shadows/planar-shadow-system.d.ts +5 -0
  138. package/dist/babylon/renderer/shadows/planar-shadow-system.d.ts.map +1 -0
  139. package/dist/babylon/renderer/shadows/planar-shadow-system.js +1562 -0
  140. package/dist/babylon/renderer/shadows/planar-shadow-system.js.map +1 -0
  141. package/dist/babylon/renderer/shadows/shadow-generator-shaders.d.ts +14 -0
  142. package/dist/babylon/renderer/shadows/shadow-generator-shaders.d.ts.map +1 -0
  143. package/dist/babylon/renderer/shadows/shadow-generator-shaders.js +14 -0
  144. package/dist/babylon/renderer/shadows/shadow-generator-shaders.js.map +1 -0
  145. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.d.ts +68 -0
  146. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
  147. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.js +829 -0
  148. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
  149. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.d.ts +148 -0
  150. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.d.ts.map +1 -0
  151. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.js +4529 -0
  152. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.js.map +1 -0
  153. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.d.ts +4 -0
  154. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.d.ts.map +1 -0
  155. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.js +645 -0
  156. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.js.map +1 -0
  157. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.d.ts +61 -0
  158. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.d.ts.map +1 -0
  159. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.js +382 -0
  160. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.js.map +1 -0
  161. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.d.ts +47 -0
  162. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.d.ts.map +1 -0
  163. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.js +285 -0
  164. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.js.map +1 -0
  165. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.d.ts +88 -0
  166. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.d.ts.map +1 -0
  167. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.js +830 -0
  168. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.js.map +1 -0
  169. package/dist/babylon/renderer/shadows/static-projected-shadow-options.d.ts +3 -0
  170. package/dist/babylon/renderer/shadows/static-projected-shadow-options.d.ts.map +1 -0
  171. package/dist/babylon/renderer/shadows/static-projected-shadow-options.js +60 -0
  172. package/dist/babylon/renderer/shadows/static-projected-shadow-options.js.map +1 -0
  173. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.d.ts +27 -0
  174. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.d.ts.map +1 -0
  175. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.js +220 -0
  176. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.js.map +1 -0
  177. package/dist/babylon/renderer/shadows/types.d.ts +421 -0
  178. package/dist/babylon/renderer/shadows/types.d.ts.map +1 -0
  179. package/dist/babylon/renderer/shadows/types.js +127 -0
  180. package/dist/babylon/renderer/shadows/types.js.map +1 -0
  181. package/dist/babylon/renderer-controller.d.ts +93 -0
  182. package/dist/babylon/renderer-controller.d.ts.map +1 -0
  183. package/dist/babylon/renderer-controller.js +699 -0
  184. package/dist/babylon/renderer-controller.js.map +1 -0
  185. package/dist/babylon/scene-renderer.d.ts +20 -0
  186. package/dist/babylon/scene-renderer.d.ts.map +1 -0
  187. package/dist/babylon/scene-renderer.js +60 -0
  188. package/dist/babylon/scene-renderer.js.map +1 -0
  189. package/dist/babylon.d.ts +5 -0
  190. package/dist/babylon.d.ts.map +1 -1
  191. package/dist/babylon.js +5 -0
  192. package/dist/babylon.js.map +1 -1
  193. package/dist/build-info.json +4 -4
  194. package/dist/compiled-scene-data.d.ts +23 -0
  195. package/dist/compiled-scene-data.d.ts.map +1 -0
  196. package/dist/compiled-scene-data.js +100 -0
  197. package/dist/compiled-scene-data.js.map +1 -0
  198. package/dist/ground-decal.d.ts +22 -0
  199. package/dist/ground-decal.d.ts.map +1 -0
  200. package/dist/ground-decal.js +48 -0
  201. package/dist/ground-decal.js.map +1 -0
  202. package/dist/index.d.ts +13 -0
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +13 -0
  205. package/dist/index.js.map +1 -1
  206. package/dist/material-owner.d.ts +128 -0
  207. package/dist/material-owner.d.ts.map +1 -0
  208. package/dist/material-owner.js +434 -0
  209. package/dist/material-owner.js.map +1 -0
  210. package/dist/material-profile.d.ts +62 -0
  211. package/dist/material-profile.d.ts.map +1 -0
  212. package/dist/material-profile.js +132 -0
  213. package/dist/material-profile.js.map +1 -0
  214. package/dist/rendering/index.d.ts +14 -0
  215. package/dist/rendering/index.d.ts.map +1 -0
  216. package/dist/rendering/index.js +12 -0
  217. package/dist/rendering/index.js.map +1 -0
  218. package/dist/rendering/rendering-profile-types.d.ts +322 -0
  219. package/dist/rendering/rendering-profile-types.d.ts.map +1 -0
  220. package/dist/rendering/rendering-profile-types.js +2 -0
  221. package/dist/rendering/rendering-profile-types.js.map +1 -0
  222. package/dist/rendering/rendering-profile-validation.d.ts +2 -0
  223. package/dist/rendering/rendering-profile-validation.d.ts.map +1 -0
  224. package/dist/rendering/rendering-profile-validation.js +364 -0
  225. package/dist/rendering/rendering-profile-validation.js.map +1 -0
  226. package/dist/rendering/rendering-profile-values.d.ts +19 -0
  227. package/dist/rendering/rendering-profile-values.d.ts.map +1 -0
  228. package/dist/rendering/rendering-profile-values.js +79 -0
  229. package/dist/rendering/rendering-profile-values.js.map +1 -0
  230. package/dist/rendering/rendering-profile.d.ts +15 -0
  231. package/dist/rendering/rendering-profile.d.ts.map +1 -0
  232. package/dist/rendering/rendering-profile.js +442 -0
  233. package/dist/rendering/rendering-profile.js.map +1 -0
  234. package/dist/rendering/shadow-map-experiment-depth.d.ts +63 -0
  235. package/dist/rendering/shadow-map-experiment-depth.d.ts.map +1 -0
  236. package/dist/rendering/shadow-map-experiment-depth.js +186 -0
  237. package/dist/rendering/shadow-map-experiment-depth.js.map +1 -0
  238. package/dist/rendering/shadow-map-experiment-lifecycle.d.ts +94 -0
  239. package/dist/rendering/shadow-map-experiment-lifecycle.d.ts.map +1 -0
  240. package/dist/rendering/shadow-map-experiment-lifecycle.js +407 -0
  241. package/dist/rendering/shadow-map-experiment-lifecycle.js.map +1 -0
  242. package/dist/rendering/shadow-map-experiment.d.ts +189 -0
  243. package/dist/rendering/shadow-map-experiment.d.ts.map +1 -0
  244. package/dist/rendering/shadow-map-experiment.js +549 -0
  245. package/dist/rendering/shadow-map-experiment.js.map +1 -0
  246. package/dist/rendering/shadow-quality.d.ts +5 -0
  247. package/dist/rendering/shadow-quality.d.ts.map +1 -0
  248. package/dist/rendering/shadow-quality.js +83 -0
  249. package/dist/rendering/shadow-quality.js.map +1 -0
  250. package/dist/rendering/shadow-runtime.d.ts +59 -0
  251. package/dist/rendering/shadow-runtime.d.ts.map +1 -0
  252. package/dist/rendering/shadow-runtime.js +378 -0
  253. package/dist/rendering/shadow-runtime.js.map +1 -0
  254. package/dist/rendering/shadow-settings.d.ts +15 -0
  255. package/dist/rendering/shadow-settings.d.ts.map +1 -0
  256. package/dist/rendering/shadow-settings.js +129 -0
  257. package/dist/rendering/shadow-settings.js.map +1 -0
  258. package/dist/rendering/shadow-types.d.ts +99 -0
  259. package/dist/rendering/shadow-types.d.ts.map +1 -0
  260. package/dist/rendering/shadow-types.js +5 -0
  261. package/dist/rendering/shadow-types.js.map +1 -0
  262. package/dist/rendering/shadow-validation.d.ts +3 -0
  263. package/dist/rendering/shadow-validation.d.ts.map +1 -0
  264. package/dist/rendering/shadow-validation.js +166 -0
  265. package/dist/rendering/shadow-validation.js.map +1 -0
  266. package/dist/rendering/value.d.ts +2 -0
  267. package/dist/rendering/value.d.ts.map +1 -0
  268. package/dist/rendering/value.js +6 -0
  269. package/dist/rendering/value.js.map +1 -0
  270. package/dist/runtime-data-token.d.ts +4 -0
  271. package/dist/runtime-data-token.d.ts.map +1 -0
  272. package/dist/runtime-data-token.js +4 -0
  273. package/dist/runtime-data-token.js.map +1 -0
  274. package/dist/runtime-data-types.d.ts +83 -0
  275. package/dist/runtime-data-types.d.ts.map +1 -0
  276. package/dist/runtime-data-types.js +2 -0
  277. package/dist/runtime-data-types.js.map +1 -0
  278. package/dist/runtime-data.d.ts +18 -0
  279. package/dist/runtime-data.d.ts.map +1 -0
  280. package/dist/runtime-data.js +301 -0
  281. package/dist/runtime-data.js.map +1 -0
  282. package/dist/runtime-scene-resolvers.d.ts +37 -0
  283. package/dist/runtime-scene-resolvers.d.ts.map +1 -0
  284. package/dist/runtime-scene-resolvers.js +40 -0
  285. package/dist/runtime-scene-resolvers.js.map +1 -0
  286. package/dist/scene-artifact-types.d.ts +383 -0
  287. package/dist/scene-artifact-types.d.ts.map +1 -0
  288. package/dist/scene-artifact-types.js +2 -0
  289. package/dist/scene-artifact-types.js.map +1 -0
  290. package/dist/scene-artifact-validation.d.ts +19 -0
  291. package/dist/scene-artifact-validation.d.ts.map +1 -0
  292. package/dist/scene-artifact-validation.js +1352 -0
  293. package/dist/scene-artifact-validation.js.map +1 -0
  294. package/dist/static-shadow-artifact.d.ts +131 -0
  295. package/dist/static-shadow-artifact.d.ts.map +1 -0
  296. package/dist/static-shadow-artifact.js +327 -0
  297. package/dist/static-shadow-artifact.js.map +1 -0
  298. package/package.json +9 -1
@@ -0,0 +1,39 @@
1
+ import type { FpsGeneratedAssetCatalog } from './runtime-data-types.js';
2
+ export type FpsAssetFormat = `.${string}`;
3
+ export type FpsAssetResourceTransport = 'path-url' | 'http-url' | 'data-url' | 'blob-url';
4
+ export interface FpsResolvedAssetResource {
5
+ readonly assetId: string | null;
6
+ readonly url: string;
7
+ readonly format: FpsAssetFormat;
8
+ readonly transport: FpsAssetResourceTransport;
9
+ readonly relativePath: string | null;
10
+ readonly originalFileName: string | null;
11
+ }
12
+ export interface FpsAssetResourceReference {
13
+ readonly assetId?: string | null;
14
+ readonly url?: string | null;
15
+ }
16
+ export type FpsAssetResourceResolutionCode = 'asset.resource.not-found' | 'asset.resource.format-missing' | 'asset.resource.format-unsupported' | 'asset.resource.invalid-reference';
17
+ export interface FpsAssetResourceResolutionDiagnostic {
18
+ readonly code: FpsAssetResourceResolutionCode;
19
+ readonly assetId: string | null;
20
+ readonly format: FpsAssetFormat | null;
21
+ readonly transport: FpsAssetResourceTransport | null;
22
+ /** A safe bounded URL description. It never includes a data/blob payload. */
23
+ readonly urlSummary: string | null;
24
+ }
25
+ export type FpsAssetResourceResolution = Readonly<{
26
+ ok: true;
27
+ resource: FpsResolvedAssetResource;
28
+ }> | Readonly<{
29
+ ok: false;
30
+ diagnostic: FpsAssetResourceResolutionDiagnostic;
31
+ }>;
32
+ export interface FpsAssetResourceResolver {
33
+ resolve(reference: FpsAssetResourceReference): FpsAssetResourceResolution;
34
+ }
35
+ export declare function createFpsAssetResourceResolver(catalog: FpsGeneratedAssetCatalog): FpsAssetResourceResolver;
36
+ export declare function getFpsAssetFormat(value: unknown): FpsAssetFormat | null;
37
+ export declare function isFpsAssetFormatSupported(format: FpsAssetFormat): boolean;
38
+ export declare function getFpsAssetResourceTransport(url: string): FpsAssetResourceTransport;
39
+ //# sourceMappingURL=asset-resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-resource.d.ts","sourceRoot":"","sources":["../src/asset-resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAiC,MAAM,yBAAyB,CAAC;AAEvG,MAAM,MAAM,cAAc,GAAG,IAAI,MAAM,EAAE,CAAC;AAC1C,MAAM,MAAM,yBAAyB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAE1F,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,8BAA8B,GACtC,0BAA0B,GAC1B,+BAA+B,GAC/B,mCAAmC,GACnC,kCAAkC,CAAC;AAEvC,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,yBAAyB,GAAG,IAAI,CAAC;IACrD,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,0BAA0B,GAClC,QAAQ,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,CAAC,GAC1D,QAAQ,CAAC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,oCAAoC,CAAA;CAAE,CAAC,CAAC;AAE9E,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,SAAS,EAAE,yBAAyB,GAAG,0BAA0B,CAAC;CAC3E;AASD,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,wBAAwB,GAChC,wBAAwB,CAoC1B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAQvE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAEzE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAKnF"}
@@ -0,0 +1,121 @@
1
+ const FPS_SUPPORTED_ASSET_FORMATS = new Set([
2
+ '.glb', '.gltf',
3
+ '.png', '.jpg', '.jpeg', '.webp',
4
+ '.env', '.hdr', '.dds', '.ktx', '.ktx2',
5
+ '.mp3', '.wav', '.ogg', '.flac', '.aac', '.m4a',
6
+ ]);
7
+ export function createFpsAssetResourceResolver(catalog) {
8
+ const entries = new Map();
9
+ for (const [catalogAssetId, input] of Object.entries(catalog)) {
10
+ const entry = normalizeCatalogEntry(catalogAssetId, input);
11
+ if (entries.has(entry.assetId))
12
+ throw new Error(`Duplicate generated asset catalog id: ${entry.assetId}`);
13
+ entries.set(entry.assetId, entry);
14
+ }
15
+ return Object.freeze({
16
+ resolve(reference) {
17
+ const assetId = normalizeOptionalString(reference.assetId);
18
+ const url = normalizeOptionalString(reference.url);
19
+ if (assetId) {
20
+ const entry = entries.get(assetId);
21
+ if (!entry)
22
+ return failed('asset.resource.not-found', assetId, null, null, url);
23
+ return resolved({
24
+ assetId: entry.assetId,
25
+ url: entry.url,
26
+ format: entry.format,
27
+ transport: getFpsAssetResourceTransport(entry.url),
28
+ relativePath: entry.relativePath,
29
+ originalFileName: entry.originalFileName ?? null,
30
+ });
31
+ }
32
+ if (!url)
33
+ return failed('asset.resource.invalid-reference', null, null, null, null);
34
+ const transport = getFpsAssetResourceTransport(url);
35
+ if (transport === 'data-url' || transport === 'blob-url') {
36
+ return failed('asset.resource.format-missing', null, null, transport, url);
37
+ }
38
+ const format = getFpsAssetFormat(url);
39
+ if (!format)
40
+ return failed('asset.resource.format-missing', null, null, transport, url);
41
+ if (!isFpsAssetFormatSupported(format)) {
42
+ return failed('asset.resource.format-unsupported', null, format, transport, url);
43
+ }
44
+ return resolved({ assetId: null, url, format, transport, relativePath: null, originalFileName: null });
45
+ },
46
+ });
47
+ }
48
+ export function getFpsAssetFormat(value) {
49
+ const normalized = String(value ?? '').trim().toLowerCase();
50
+ if (/^\.[a-z0-9]+$/.test(normalized))
51
+ return normalized;
52
+ const path = normalized.split(/[?#]/, 1)[0] ?? '';
53
+ const fileName = path.slice(path.lastIndexOf('/') + 1);
54
+ const dot = fileName.lastIndexOf('.');
55
+ if (dot <= 0 || dot === fileName.length - 1)
56
+ return null;
57
+ return fileName.slice(dot);
58
+ }
59
+ export function isFpsAssetFormatSupported(format) {
60
+ return FPS_SUPPORTED_ASSET_FORMATS.has(format);
61
+ }
62
+ export function getFpsAssetResourceTransport(url) {
63
+ if (/^data:/i.test(url))
64
+ return 'data-url';
65
+ if (/^blob:/i.test(url))
66
+ return 'blob-url';
67
+ if (/^https?:/i.test(url))
68
+ return 'http-url';
69
+ return 'path-url';
70
+ }
71
+ function normalizeCatalogEntry(catalogAssetId, input) {
72
+ const assetId = normalizeRequiredString(input?.assetId, `Generated asset catalog entry ${catalogAssetId} assetId`);
73
+ if (assetId !== catalogAssetId)
74
+ throw new Error(`Generated asset catalog key/id mismatch: ${catalogAssetId}`);
75
+ const url = normalizeRequiredString(input.url, `Generated asset catalog entry ${assetId} url`);
76
+ const relativePath = normalizeRequiredString(input.relativePath, `Generated asset catalog entry ${assetId} relativePath`);
77
+ const format = normalizeFormat(input.format, `Generated asset catalog entry ${assetId} format`);
78
+ const derivedFormat = getFpsAssetFormat(relativePath);
79
+ if (derivedFormat !== format)
80
+ throw new Error(`Generated asset catalog entry ${assetId} format must match relativePath.`);
81
+ if (!isFpsAssetFormatSupported(format))
82
+ throw new Error(`Generated asset catalog entry ${assetId} has unsupported format: ${format}`);
83
+ const originalFileName = normalizeOptionalString(input.originalFileName);
84
+ return Object.freeze({ assetId, url, format, relativePath, ...(originalFileName ? { originalFileName } : {}) });
85
+ }
86
+ function normalizeFormat(value, label) {
87
+ const format = getFpsAssetFormat(String(value ?? ''));
88
+ if (!format || format !== String(value).trim().toLowerCase())
89
+ throw new Error(`${label} must be a normalized file extension.`);
90
+ return format;
91
+ }
92
+ function normalizeRequiredString(value, label) {
93
+ const result = normalizeOptionalString(value);
94
+ if (!result)
95
+ throw new Error(`${label} is required.`);
96
+ return result;
97
+ }
98
+ function normalizeOptionalString(value) {
99
+ if (typeof value !== 'string')
100
+ return null;
101
+ const result = value.trim();
102
+ return result || null;
103
+ }
104
+ function resolved(resource) {
105
+ return Object.freeze({ ok: true, resource: Object.freeze(resource) });
106
+ }
107
+ function failed(code, assetId, format, transport, url) {
108
+ return Object.freeze({ ok: false, diagnostic: Object.freeze({
109
+ code, assetId, format, transport, urlSummary: summarizeUrl(url),
110
+ }) });
111
+ }
112
+ function summarizeUrl(url) {
113
+ if (!url)
114
+ return null;
115
+ if (/^data:/i.test(url))
116
+ return 'data:<redacted>';
117
+ if (/^blob:/i.test(url))
118
+ return 'blob:<redacted>';
119
+ return url.length <= 160 ? url : `${url.slice(0, 157)}...`;
120
+ }
121
+ //# sourceMappingURL=asset-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-resource.js","sourceRoot":"","sources":["../src/asset-resource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { FpsGeneratedAssetCatalog, FpsRuntimeData } from '../runtime-data-types.js';
2
+ import type { FpsDiagnostic, FpsPluginEnvironmentModule } from '@fps-games/plugin-sdk';
3
+ import { type FpsPluginHost } from '@fps-games/plugin-sdk/host';
4
+ import { type FpsRuntimeFrameInput, type FpsRuntimeFrameSchedulerSnapshot } from '@fps-games/plugin-sdk/runtime';
5
+ import { type FpsBabylonRendererContext, type FpsBabylonRendererService } from './renderer-controller.js';
6
+ export interface FpsBabylonGameWorldPluginLifecycleOptions {
7
+ readonly runtimeModule: FpsPluginEnvironmentModule;
8
+ readonly rendererModule: FpsPluginEnvironmentModule;
9
+ readonly runtimeData: FpsRuntimeData;
10
+ readonly assetCatalog: FpsGeneratedAssetCatalog;
11
+ readonly apiVersion: number;
12
+ readonly report?: (diagnostic: FpsDiagnostic) => void;
13
+ }
14
+ export interface FpsBabylonGameWorldPluginLifecycle {
15
+ readonly runtimeHost: FpsPluginHost | null;
16
+ readonly rendererHost: FpsPluginHost | null;
17
+ readonly renderer: FpsBabylonRendererService | null;
18
+ startRuntime(): Promise<void>;
19
+ advanceFrame(input: FpsRuntimeFrameInput): void;
20
+ inspectFrames(): FpsRuntimeFrameSchedulerSnapshot | null;
21
+ attachRenderer(context: FpsBabylonRendererContext): Promise<FpsBabylonRendererService>;
22
+ detachRenderer(): Promise<void>;
23
+ dispose(): Promise<void>;
24
+ }
25
+ export declare function createFpsBabylonGameWorldPluginLifecycle(options: FpsBabylonGameWorldPluginLifecycleOptions): FpsBabylonGameWorldPluginLifecycle;
26
+ //# sourceMappingURL=game-world-plugin-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-world-plugin-lifecycle.d.ts","sourceRoot":"","sources":["../../src/babylon/game-world-plugin-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAEzF,OAAO,KAAK,EACV,aAAa,EACb,0BAA0B,EAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAGL,KAAK,oBAAoB,EAEzB,KAAK,gCAAgC,EACtC,MAAM,+BAA+B,CAAC;AAQvC,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC/B,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,yCAAyC;IACxD,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,0BAA0B,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,WAAW,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAC;IACpD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAChD,aAAa,IAAI,gCAAgC,GAAG,IAAI,CAAC;IACzD,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACvF,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAID,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,yCAAyC,GACjD,kCAAkC,CAkPpC"}
@@ -0,0 +1,257 @@
1
+ import { createFpsRuntimeDataSnapshot } from '../runtime-data.js';
2
+ import { createFpsPluginHostFromEnvironmentModule, } from '@fps-games/plugin-sdk/host';
3
+ import { createFpsRuntimeFrameScheduler, FPS_RUNTIME_FRAME_SCHEDULER, } from '@fps-games/plugin-sdk/runtime';
4
+ import { FPS_ASSET_CATALOG_SOURCE, FPS_BABYLON_RENDERER_CONTEXT, FPS_BABYLON_RENDERER_DATA, FPS_BABYLON_RENDERER_SERVICE, FPS_RUNTIME_DATA, } from './plugin-contract.js';
5
+ import {} from './renderer-controller.js';
6
+ export function createFpsBabylonGameWorldPluginLifecycle(options) {
7
+ assertEnvironmentModule(options.runtimeModule, 'runtime');
8
+ assertEnvironmentModule(options.rendererModule, 'renderer');
9
+ const runtimeData = createFpsRuntimeDataSnapshot(options.runtimeData);
10
+ let runtimeHost = null;
11
+ let runtimeFrames = null;
12
+ let rendererHost = null;
13
+ let renderer = null;
14
+ let rendererScene = null;
15
+ let rendererOwnershipOpen = false;
16
+ let operationInProgress = null;
17
+ const run = (operation, callback) => {
18
+ if (operationInProgress) {
19
+ return Promise.reject(new Error(`GameWorld Plugin lifecycle cannot ${operation} while ${operationInProgress} is in progress.`));
20
+ }
21
+ operationInProgress = operation;
22
+ return callback().finally(() => { operationInProgress = null; });
23
+ };
24
+ const clearRuntimeHostIfDisposed = (host) => {
25
+ if (runtimeHost !== host || host.state !== 'disposed')
26
+ return;
27
+ runtimeHost = null;
28
+ runtimeFrames?.driver.dispose();
29
+ runtimeFrames = null;
30
+ };
31
+ const clearRendererHostIfDisposed = (host) => {
32
+ if (rendererHost !== host || host.state !== 'disposed')
33
+ return;
34
+ rendererHost = null;
35
+ renderer = null;
36
+ rendererScene = null;
37
+ rendererOwnershipOpen = false;
38
+ };
39
+ const cleanupFailedStart = async (host, clear, primaryError) => {
40
+ const cleanupErrors = [];
41
+ if (host.state !== 'disposed') {
42
+ try {
43
+ await host.dispose();
44
+ }
45
+ catch (error) {
46
+ cleanupErrors.push(error);
47
+ }
48
+ }
49
+ clear(host);
50
+ if (cleanupErrors.length > 0 && primaryError && typeof primaryError === 'object') {
51
+ try {
52
+ Object.assign(primaryError, { cleanupErrors: Object.freeze(cleanupErrors) });
53
+ }
54
+ catch { /* Preserve the primary failure even when it cannot be annotated. */ }
55
+ }
56
+ throw primaryError;
57
+ };
58
+ const startRuntime = () => run('start-runtime', async () => {
59
+ if (runtimeHost?.state === 'started')
60
+ return;
61
+ if (runtimeHost) {
62
+ throw new Error(`GameWorld Runtime Host is retained in ${runtimeHost.state}; dispose it before restarting.`);
63
+ }
64
+ const frames = createFpsRuntimeFrameScheduler({ report: options.report });
65
+ let host;
66
+ try {
67
+ host = createFpsPluginHostFromEnvironmentModule({
68
+ module: options.runtimeModule,
69
+ apiVersion: options.apiVersion,
70
+ scope: 'project',
71
+ initialServices: [
72
+ { token: FPS_RUNTIME_DATA, value: runtimeData },
73
+ {
74
+ token: FPS_ASSET_CATALOG_SOURCE,
75
+ value: Object.freeze({ catalog: options.assetCatalog }),
76
+ },
77
+ { token: FPS_RUNTIME_FRAME_SCHEDULER, value: frames.scheduler },
78
+ ],
79
+ report: options.report,
80
+ });
81
+ }
82
+ catch (error) {
83
+ frames.driver.dispose();
84
+ throw error;
85
+ }
86
+ runtimeHost = host;
87
+ runtimeFrames = frames;
88
+ try {
89
+ await host.start();
90
+ }
91
+ catch (error) {
92
+ return cleanupFailedStart(host, clearRuntimeHostIfDisposed, error);
93
+ }
94
+ });
95
+ const advanceFrame = (input) => {
96
+ if (operationInProgress) {
97
+ throw new Error(`GameWorld Runtime frames cannot advance while ${operationInProgress} is in progress.`);
98
+ }
99
+ if (runtimeHost?.state !== 'started' || !runtimeFrames) {
100
+ throw new Error(`GameWorld Runtime frames require a started Host, got: ${runtimeHost?.state ?? 'absent'}.`);
101
+ }
102
+ runtimeFrames.driver.advance(input);
103
+ };
104
+ const attachRenderer = (context) => run('attach-renderer', async () => {
105
+ if (runtimeHost?.state !== 'started') {
106
+ throw new Error('GameWorld Runtime Host must be started before attaching the Renderer Host.');
107
+ }
108
+ if (rendererHost?.state === 'started' && renderer) {
109
+ if (rendererScene !== context.scene) {
110
+ throw new Error('GameWorld Renderer Host is already attached to a different Scene.');
111
+ }
112
+ return renderer;
113
+ }
114
+ if (rendererHost) {
115
+ throw new Error(`GameWorld Renderer Host is retained in ${rendererHost.state}; detach it before restarting.`);
116
+ }
117
+ const host = createFpsPluginHostFromEnvironmentModule({
118
+ module: options.rendererModule,
119
+ apiVersion: options.apiVersion,
120
+ scope: 'application',
121
+ initialServices: [
122
+ { token: FPS_BABYLON_RENDERER_CONTEXT, value: context },
123
+ { token: FPS_BABYLON_RENDERER_DATA, value: runtimeData },
124
+ {
125
+ token: FPS_ASSET_CATALOG_SOURCE,
126
+ value: Object.freeze({ catalog: options.assetCatalog }),
127
+ },
128
+ ],
129
+ report: options.report,
130
+ });
131
+ rendererHost = host;
132
+ rendererScene = context.scene;
133
+ try {
134
+ await host.start();
135
+ const rendererController = host.services.get(FPS_BABYLON_RENDERER_SERVICE);
136
+ rendererOwnershipOpen = true;
137
+ const shadows = Object.freeze({
138
+ registerRuntimeShadowObjects: (input) => {
139
+ assertRendererOwnershipOpen(rendererOwnershipOpen);
140
+ return rendererController.shadows.registerRuntimeShadowObjects(input);
141
+ },
142
+ registerActivitySource: (input) => {
143
+ assertRendererOwnershipOpen(rendererOwnershipOpen);
144
+ return rendererController.shadows.registerActivitySource(input);
145
+ },
146
+ getRuntimeSnapshot: () => rendererController.shadows.getRuntimeSnapshot(),
147
+ getEvidence: () => rendererController.shadows.getEvidence(),
148
+ getAppearance: () => rendererController.shadows.getAppearance(),
149
+ previewAppearance: (input) => {
150
+ assertRendererOwnershipOpen(rendererOwnershipOpen);
151
+ return rendererController.shadows.previewAppearance(input);
152
+ },
153
+ });
154
+ const cameras = Object.freeze({
155
+ register: (camera) => {
156
+ assertRendererOwnershipOpen(rendererOwnershipOpen);
157
+ const registration = rendererController.cameras.register(camera);
158
+ let registrationOpen = true;
159
+ return Object.freeze({
160
+ dispose() {
161
+ if (!registrationOpen)
162
+ return;
163
+ registration.dispose();
164
+ registrationOpen = false;
165
+ },
166
+ });
167
+ },
168
+ });
169
+ const lighting = Object.freeze({
170
+ previewDirectionalLight: (input) => {
171
+ assertRendererOwnershipOpen(rendererOwnershipOpen);
172
+ rendererController.lighting.previewDirectionalLight(input);
173
+ },
174
+ });
175
+ const rendering = Object.freeze({
176
+ getEnvironmentAppearance: () => rendererController.rendering.getEnvironmentAppearance(),
177
+ previewEnvironmentAppearance: (input) => {
178
+ assertRendererOwnershipOpen(rendererOwnershipOpen);
179
+ return rendererController.rendering.previewEnvironmentAppearance(input);
180
+ },
181
+ });
182
+ renderer = Object.freeze({ cameras, lighting, rendering, shadows });
183
+ return renderer;
184
+ }
185
+ catch (error) {
186
+ return cleanupFailedStart(host, clearRendererHostIfDisposed, error);
187
+ }
188
+ });
189
+ const detachRenderer = () => run('detach-renderer', async () => {
190
+ const host = rendererHost;
191
+ if (!host)
192
+ return;
193
+ rendererOwnershipOpen = false;
194
+ try {
195
+ await host.dispose();
196
+ }
197
+ finally {
198
+ clearRendererHostIfDisposed(host);
199
+ }
200
+ });
201
+ const dispose = () => run('dispose', async () => {
202
+ const errors = [];
203
+ const currentRendererHost = rendererHost;
204
+ if (currentRendererHost) {
205
+ rendererOwnershipOpen = false;
206
+ try {
207
+ await currentRendererHost.dispose();
208
+ }
209
+ catch (error) {
210
+ errors.push(error);
211
+ }
212
+ finally {
213
+ clearRendererHostIfDisposed(currentRendererHost);
214
+ }
215
+ }
216
+ const currentRuntimeHost = runtimeHost;
217
+ if (currentRuntimeHost) {
218
+ try {
219
+ await currentRuntimeHost.dispose();
220
+ }
221
+ catch (error) {
222
+ errors.push(error);
223
+ }
224
+ finally {
225
+ clearRuntimeHostIfDisposed(currentRuntimeHost);
226
+ }
227
+ }
228
+ if (errors.length === 1)
229
+ throw errors[0];
230
+ if (errors.length > 1) {
231
+ throw Object.assign(new Error('GameWorld Plugin lifecycle disposal failed.'), {
232
+ cleanupErrors: Object.freeze(errors),
233
+ });
234
+ }
235
+ });
236
+ return Object.freeze({
237
+ get runtimeHost() { return runtimeHost; },
238
+ get rendererHost() { return rendererHost; },
239
+ get renderer() { return renderer; },
240
+ startRuntime,
241
+ advanceFrame,
242
+ inspectFrames: () => runtimeFrames?.scheduler.snapshot() ?? null,
243
+ attachRenderer,
244
+ detachRenderer,
245
+ dispose,
246
+ });
247
+ }
248
+ function assertRendererOwnershipOpen(open) {
249
+ if (!open)
250
+ throw new Error('Babylon renderer service is disposed.');
251
+ }
252
+ function assertEnvironmentModule(module, expectedEnvironment) {
253
+ if (module.environment !== expectedEnvironment) {
254
+ throw new Error(`Expected a ${expectedEnvironment} Plugin environment module, received ${module.environment}.`);
255
+ }
256
+ }
257
+ //# sourceMappingURL=game-world-plugin-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-world-plugin-lifecycle.js","sourceRoot":"","sources":["../../src/babylon/game-world-plugin-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { FpsAssetResourceResolver } from '../asset-resource.js';
2
+ import type { FpsGeneratedAssetCatalog, FpsRuntimeData } from '../runtime-data-types.js';
3
+ import type { FpsBabylonRendererContext, FpsBabylonRendererHostController } from './renderer-controller.js';
4
+ export declare const FPS_BABYLON_RENDERER_PLUGIN_ID: "fps.renderer.babylon";
5
+ export type FpsBabylonRendererPluginConfig = Readonly<Record<string, never>>;
6
+ export interface FpsAssetCatalogSource {
7
+ readonly catalog: FpsGeneratedAssetCatalog;
8
+ }
9
+ export declare const FPS_RUNTIME_DATA: import("@fps-games/plugin-sdk").FpsServiceToken<FpsRuntimeData<import("../runtime-data-types.js").FpsRuntimeAsset, import("../runtime-data-types.js").FpsRuntimeSceneNode>>;
10
+ export declare const FPS_ASSET_CATALOG_SOURCE: import("@fps-games/plugin-sdk").FpsServiceToken<FpsAssetCatalogSource>;
11
+ export declare const FPS_ASSET_RESOURCE_RESOLVER: import("@fps-games/plugin-sdk").FpsServiceToken<FpsAssetResourceResolver>;
12
+ export declare const FPS_BABYLON_RENDERER_CONTEXT: import("@fps-games/plugin-sdk").FpsServiceToken<FpsBabylonRendererContext>;
13
+ export declare const FPS_BABYLON_RENDERER_DATA: import("@fps-games/plugin-sdk").FpsServiceToken<FpsRuntimeData<import("../runtime-data-types.js").FpsRuntimeAsset, import("../runtime-data-types.js").FpsRuntimeSceneNode>>;
14
+ export declare const FPS_BABYLON_RENDERER_SERVICE: import("@fps-games/plugin-sdk").FpsServiceToken<FpsBabylonRendererHostController>;
15
+ //# sourceMappingURL=plugin-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-contract.d.ts","sourceRoot":"","sources":["../../src/babylon/plugin-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,KAAK,EACV,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,0BAA0B,CAAC;AAElC,eAAO,MAAM,8BAA8B,EAAG,sBAA+B,CAAC;AAC9E,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;CAC5C;AAED,eAAO,MAAM,gBAAgB,6KAA4D,CAAC;AAC1F,eAAO,MAAM,wBAAwB,wEAEpC,CAAC;AACF,eAAO,MAAM,2BAA2B,2EAEvC,CAAC;AACF,eAAO,MAAM,4BAA4B,4EAExC,CAAC;AACF,eAAO,MAAM,yBAAyB,6KAErC,CAAC;AACF,eAAO,MAAM,4BAA4B,mFAExC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { defineFpsServiceToken } from '@fps-games/plugin-sdk';
2
+ export const FPS_BABYLON_RENDERER_PLUGIN_ID = 'fps.renderer.babylon';
3
+ export const FPS_RUNTIME_DATA = defineFpsServiceToken('fps.runtime.data');
4
+ export const FPS_ASSET_CATALOG_SOURCE = defineFpsServiceToken('fps.asset.catalog.source');
5
+ export const FPS_ASSET_RESOURCE_RESOLVER = defineFpsServiceToken('fps.asset.resource.resolver');
6
+ export const FPS_BABYLON_RENDERER_CONTEXT = defineFpsServiceToken('fps.renderer.babylon.context');
7
+ export const FPS_BABYLON_RENDERER_DATA = defineFpsServiceToken('fps.renderer.babylon.runtime-data');
8
+ export const FPS_BABYLON_RENDERER_SERVICE = defineFpsServiceToken('fps.renderer.babylon.service');
9
+ //# sourceMappingURL=plugin-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-contract.js","sourceRoot":"","sources":["../../src/babylon/plugin-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAQ9D,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAA+B,CAAC;AAO9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAiB,kBAAkB,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAqB,CAC3D,0BAA0B,CAC3B,CAAC;AACF,MAAM,CAAC,MAAM,2BAA2B,GAAG,qBAAqB,CAC9D,6BAA6B,CAC9B,CAAC;AACF,MAAM,CAAC,MAAM,4BAA4B,GAAG,qBAAqB,CAC/D,8BAA8B,CAC/B,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAC5D,mCAAmC,CACpC,CAAC;AACF,MAAM,CAAC,MAAM,4BAA4B,GAAG,qBAAqB,CAC/D,8BAA8B,CAC/B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Scene } from '@babylonjs/core/scene.js';
2
+ export interface BabylonBrdfTextureSettlementOptions {
3
+ readonly pollIntervalMs?: number;
4
+ readonly timeoutMs?: number;
5
+ }
6
+ export declare function waitForBabylonSceneBrdfTextures(scene: Scene, options?: BabylonBrdfTextureSettlementOptions): Promise<void>;
7
+ //# sourceMappingURL=brdf-texture-settlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brdf-texture-settlement.d.ts","sourceRoot":"","sources":["../../../src/babylon/renderer/brdf-texture-settlement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAYtD,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAKD,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,mCAAwC,GAChD,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -0,0 +1,29 @@
1
+ const DEFAULT_POLL_INTERVAL_MS = 1;
2
+ const DEFAULT_TIMEOUT_MS = 10_000;
3
+ export async function waitForBabylonSceneBrdfTextures(scene, options = {}) {
4
+ const pollIntervalMs = Math.max(0, options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS);
5
+ const timeoutMs = Math.max(0, options.timeoutMs ?? DEFAULT_TIMEOUT_MS);
6
+ const deadline = Date.now() + timeoutMs;
7
+ while (hasPendingBrdfTexture(scene)) {
8
+ if (Date.now() >= deadline) {
9
+ throw Object.assign(new Error('Babylon Scene BRDF texture preprocessing did not settle before lifecycle cleanup.'), { code: 'babylon.brdf-texture.settle-timeout' });
10
+ }
11
+ await new Promise(resolve => {
12
+ globalThis.setTimeout(resolve, pollIntervalMs);
13
+ });
14
+ }
15
+ }
16
+ function hasPendingBrdfTexture(scene) {
17
+ const sceneWithBrdfTextures = scene;
18
+ return [
19
+ sceneWithBrdfTextures.environmentBRDFTexture,
20
+ sceneWithBrdfTextures.environmentFuzzBRDFTexture,
21
+ ].some(texture => {
22
+ if (!texture)
23
+ return false;
24
+ if (texture.getScene?.() === null)
25
+ return false;
26
+ return !texture.isReady();
27
+ });
28
+ }
29
+ //# sourceMappingURL=brdf-texture-settlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brdf-texture-settlement.js","sourceRoot":"","sources":["../../../src/babylon/renderer/brdf-texture-settlement.ts"],"names":[],"mappings":"AAiBA,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,KAAY,EACZ,UAA+C,EAAE;IAEjD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,IAAI,wBAAwB,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAExC,OAAO,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,mFAAmF,CAAC,EAC9F,EAAE,IAAI,EAAE,qCAAqC,EAAE,CAChD,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAChC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAY;IACzC,MAAM,qBAAqB,GAAG,KAAgD,CAAC;IAC/E,OAAO;QACL,qBAAqB,CAAC,sBAAsB;QAC5C,qBAAqB,CAAC,0BAA0B;KACjD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACf,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAChD,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ import '@babylonjs/core/Materials/Textures/baseTexture.polynomial.js';
2
+ import type { Scene } from '@babylonjs/core/scene.js';
3
+ import { type BabylonEnvironmentTextureController, type BabylonEnvironmentTextureControllerOptions } from './types.js';
4
+ export type BabylonEnvironmentTextureControllerCleanup = () => readonly unknown[];
5
+ export declare function readBabylonEnvironmentTextureControllerCleanup(error: unknown): BabylonEnvironmentTextureControllerCleanup | null;
6
+ export declare function createBabylonEnvironmentTextureController(scene: Scene, options?: BabylonEnvironmentTextureControllerOptions): BabylonEnvironmentTextureController;
7
+ //# sourceMappingURL=environment-texture-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-texture-controller.d.ts","sourceRoot":"","sources":["../../../../src/babylon/renderer/environment/environment-texture-controller.ts"],"names":[],"mappings":"AAGA,OAAO,8DAA8D,CAAC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EACL,KAAK,mCAAmC,EACxC,KAAK,0CAA0C,EAIhD,MAAM,YAAY,CAAC;AAQpB,MAAM,MAAM,0CAA0C,GAAG,MAAM,SAAS,OAAO,EAAE,CAAC;AAElF,wBAAgB,8CAA8C,CAC5D,KAAK,EAAE,OAAO,GACb,0CAA0C,GAAG,IAAI,CAOnD;AAED,wBAAgB,yCAAyC,CACvD,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,0CAA+C,GACvD,mCAAmC,CAKrC"}