@fps-games/engine 0.0.1-beta.2 → 0.0.1-beta.20

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 (333) hide show
  1. package/dist/asset-resource.d.ts +45 -0
  2. package/dist/asset-resource.d.ts.map +1 -0
  3. package/dist/asset-resource.js +147 -0
  4. package/dist/asset-resource.js.map +1 -0
  5. package/dist/babylon/camera.d.ts +25 -0
  6. package/dist/babylon/camera.d.ts.map +1 -0
  7. package/dist/babylon/camera.js +149 -0
  8. package/dist/babylon/camera.js.map +1 -0
  9. package/dist/babylon/frame-pump.d.ts +27 -0
  10. package/dist/babylon/frame-pump.d.ts.map +1 -0
  11. package/dist/babylon/frame-pump.js +90 -0
  12. package/dist/babylon/frame-pump.js.map +1 -0
  13. package/dist/babylon/game-world-plugin-lifecycle.d.ts +26 -0
  14. package/dist/babylon/game-world-plugin-lifecycle.d.ts.map +1 -0
  15. package/dist/babylon/game-world-plugin-lifecycle.js +257 -0
  16. package/dist/babylon/game-world-plugin-lifecycle.js.map +1 -0
  17. package/dist/babylon/lighting-controller.d.ts.map +1 -1
  18. package/dist/babylon/lighting-controller.js +162 -16
  19. package/dist/babylon/lighting-controller.js.map +1 -1
  20. package/dist/babylon/plugin-contract.d.ts +15 -0
  21. package/dist/babylon/plugin-contract.d.ts.map +1 -0
  22. package/dist/babylon/plugin-contract.js +10 -0
  23. package/dist/babylon/plugin-contract.js.map +1 -0
  24. package/dist/babylon/renderer/asset-container-instantiation.d.ts +39 -0
  25. package/dist/babylon/renderer/asset-container-instantiation.d.ts.map +1 -0
  26. package/dist/babylon/renderer/asset-container-instantiation.js +287 -0
  27. package/dist/babylon/renderer/asset-container-instantiation.js.map +1 -0
  28. package/dist/babylon/renderer/brdf-texture-settlement.d.ts +7 -0
  29. package/dist/babylon/renderer/brdf-texture-settlement.d.ts.map +1 -0
  30. package/dist/babylon/renderer/brdf-texture-settlement.js +29 -0
  31. package/dist/babylon/renderer/brdf-texture-settlement.js.map +1 -0
  32. package/dist/babylon/renderer/environment/environment-texture-controller.d.ts +7 -0
  33. package/dist/babylon/renderer/environment/environment-texture-controller.d.ts.map +1 -0
  34. package/dist/babylon/renderer/environment/environment-texture-controller.js +358 -0
  35. package/dist/babylon/renderer/environment/environment-texture-controller.js.map +1 -0
  36. package/dist/babylon/renderer/environment/index.d.ts +4 -0
  37. package/dist/babylon/renderer/environment/index.d.ts.map +1 -0
  38. package/dist/babylon/renderer/environment/index.js +4 -0
  39. package/dist/babylon/renderer/environment/index.js.map +1 -0
  40. package/dist/babylon/renderer/environment/profile.d.ts +3 -0
  41. package/dist/babylon/renderer/environment/profile.d.ts.map +1 -0
  42. package/dist/babylon/renderer/environment/profile.js +27 -0
  43. package/dist/babylon/renderer/environment/profile.js.map +1 -0
  44. package/dist/babylon/renderer/environment/types.d.ts +24 -0
  45. package/dist/babylon/renderer/environment/types.d.ts.map +1 -0
  46. package/dist/babylon/renderer/environment/types.js +6 -0
  47. package/dist/babylon/renderer/environment/types.js.map +1 -0
  48. package/dist/babylon/renderer/index.d.ts +26 -0
  49. package/dist/babylon/renderer/index.d.ts.map +1 -0
  50. package/dist/babylon/renderer/index.js +26 -0
  51. package/dist/babylon/renderer/index.js.map +1 -0
  52. package/dist/babylon/renderer/lighting/directional-light-angles.d.ts +17 -0
  53. package/dist/babylon/renderer/lighting/directional-light-angles.d.ts.map +1 -0
  54. package/dist/babylon/renderer/lighting/directional-light-angles.js +67 -0
  55. package/dist/babylon/renderer/lighting/directional-light-angles.js.map +1 -0
  56. package/dist/babylon/renderer/material-owner-candidates.d.ts +21 -0
  57. package/dist/babylon/renderer/material-owner-candidates.d.ts.map +1 -0
  58. package/dist/babylon/renderer/material-owner-candidates.js +217 -0
  59. package/dist/babylon/renderer/material-owner-candidates.js.map +1 -0
  60. package/dist/babylon/renderer/materials/index.d.ts +3 -0
  61. package/dist/babylon/renderer/materials/index.d.ts.map +1 -0
  62. package/dist/babylon/renderer/materials/index.js +3 -0
  63. package/dist/babylon/renderer/materials/index.js.map +1 -0
  64. package/dist/babylon/renderer/materials/material-runtime.d.ts +29 -0
  65. package/dist/babylon/renderer/materials/material-runtime.d.ts.map +1 -0
  66. package/dist/babylon/renderer/materials/material-runtime.js +660 -0
  67. package/dist/babylon/renderer/materials/material-runtime.js.map +1 -0
  68. package/dist/babylon/renderer/materials/material-slot-owner.d.ts +42 -0
  69. package/dist/babylon/renderer/materials/material-slot-owner.d.ts.map +1 -0
  70. package/dist/babylon/renderer/materials/material-slot-owner.js +318 -0
  71. package/dist/babylon/renderer/materials/material-slot-owner.js.map +1 -0
  72. package/dist/babylon/renderer/outlines/babylon-default/apply.d.ts +4 -0
  73. package/dist/babylon/renderer/outlines/babylon-default/apply.d.ts.map +1 -0
  74. package/dist/babylon/renderer/outlines/babylon-default/apply.js +45 -0
  75. package/dist/babylon/renderer/outlines/babylon-default/apply.js.map +1 -0
  76. package/dist/babylon/renderer/outlines/babylon-default/index.d.ts +3 -0
  77. package/dist/babylon/renderer/outlines/babylon-default/index.d.ts.map +1 -0
  78. package/dist/babylon/renderer/outlines/babylon-default/index.js +2 -0
  79. package/dist/babylon/renderer/outlines/babylon-default/index.js.map +1 -0
  80. package/dist/babylon/renderer/outlines/babylon-default/types.d.ts +7 -0
  81. package/dist/babylon/renderer/outlines/babylon-default/types.d.ts.map +1 -0
  82. package/dist/babylon/renderer/outlines/babylon-default/types.js +2 -0
  83. package/dist/babylon/renderer/outlines/babylon-default/types.js.map +1 -0
  84. package/dist/babylon/renderer/outlines/index.d.ts +4 -0
  85. package/dist/babylon/renderer/outlines/index.d.ts.map +1 -0
  86. package/dist/babylon/renderer/outlines/index.js +3 -0
  87. package/dist/babylon/renderer/outlines/index.js.map +1 -0
  88. package/dist/babylon/renderer/outlines/runtime-override.d.ts +36 -0
  89. package/dist/babylon/renderer/outlines/runtime-override.d.ts.map +1 -0
  90. package/dist/babylon/renderer/outlines/runtime-override.js +131 -0
  91. package/dist/babylon/renderer/outlines/runtime-override.js.map +1 -0
  92. package/dist/babylon/renderer/outlines/types.d.ts +7 -0
  93. package/dist/babylon/renderer/outlines/types.d.ts.map +1 -0
  94. package/dist/babylon/renderer/outlines/types.js +2 -0
  95. package/dist/babylon/renderer/outlines/types.js.map +1 -0
  96. package/dist/babylon/renderer/placement/index.d.ts +2 -0
  97. package/dist/babylon/renderer/placement/index.d.ts.map +1 -0
  98. package/dist/babylon/renderer/placement/index.js +2 -0
  99. package/dist/babylon/renderer/placement/index.js.map +1 -0
  100. package/dist/babylon/renderer/placement/runtime-drop-position.d.ts +24 -0
  101. package/dist/babylon/renderer/placement/runtime-drop-position.d.ts.map +1 -0
  102. package/dist/babylon/renderer/placement/runtime-drop-position.js +63 -0
  103. package/dist/babylon/renderer/placement/runtime-drop-position.js.map +1 -0
  104. package/dist/babylon/renderer/post-process/babylon-default-pipeline.d.ts +7 -0
  105. package/dist/babylon/renderer/post-process/babylon-default-pipeline.d.ts.map +1 -0
  106. package/dist/babylon/renderer/post-process/babylon-default-pipeline.js +301 -0
  107. package/dist/babylon/renderer/post-process/babylon-default-pipeline.js.map +1 -0
  108. package/dist/babylon/renderer/post-process/index.d.ts +5 -0
  109. package/dist/babylon/renderer/post-process/index.d.ts.map +1 -0
  110. package/dist/babylon/renderer/post-process/index.js +5 -0
  111. package/dist/babylon/renderer/post-process/index.js.map +1 -0
  112. package/dist/babylon/renderer/post-process/profile.d.ts +5 -0
  113. package/dist/babylon/renderer/post-process/profile.d.ts.map +1 -0
  114. package/dist/babylon/renderer/post-process/profile.js +155 -0
  115. package/dist/babylon/renderer/post-process/profile.js.map +1 -0
  116. package/dist/babylon/renderer/post-process/types.d.ts +81 -0
  117. package/dist/babylon/renderer/post-process/types.d.ts.map +1 -0
  118. package/dist/babylon/renderer/post-process/types.js +24 -0
  119. package/dist/babylon/renderer/post-process/types.js.map +1 -0
  120. package/dist/babylon/renderer/post-process/volume-stack.d.ts +4 -0
  121. package/dist/babylon/renderer/post-process/volume-stack.d.ts.map +1 -0
  122. package/dist/babylon/renderer/post-process/volume-stack.js +105 -0
  123. package/dist/babylon/renderer/post-process/volume-stack.js.map +1 -0
  124. package/dist/babylon/renderer/rendering/image-node.d.ts +35 -0
  125. package/dist/babylon/renderer/rendering/image-node.d.ts.map +1 -0
  126. package/dist/babylon/renderer/rendering/image-node.js +39 -0
  127. package/dist/babylon/renderer/rendering/image-node.js.map +1 -0
  128. package/dist/babylon/renderer/rendering/index.d.ts +3 -0
  129. package/dist/babylon/renderer/rendering/index.d.ts.map +1 -0
  130. package/dist/babylon/renderer/rendering/index.js +3 -0
  131. package/dist/babylon/renderer/rendering/index.js.map +1 -0
  132. package/dist/babylon/renderer/rendering/node-rendering.d.ts +19 -0
  133. package/dist/babylon/renderer/rendering/node-rendering.d.ts.map +1 -0
  134. package/dist/babylon/renderer/rendering/node-rendering.js +66 -0
  135. package/dist/babylon/renderer/rendering/node-rendering.js.map +1 -0
  136. package/dist/babylon/renderer/shadows/blob-shadow-shaders.d.ts +5 -0
  137. package/dist/babylon/renderer/shadows/blob-shadow-shaders.d.ts.map +1 -0
  138. package/dist/babylon/renderer/shadows/blob-shadow-shaders.js +46 -0
  139. package/dist/babylon/renderer/shadows/blob-shadow-shaders.js.map +1 -0
  140. package/dist/babylon/renderer/shadows/blob-shadow-system.d.ts +5 -0
  141. package/dist/babylon/renderer/shadows/blob-shadow-system.d.ts.map +1 -0
  142. package/dist/babylon/renderer/shadows/blob-shadow-system.js +402 -0
  143. package/dist/babylon/renderer/shadows/blob-shadow-system.js.map +1 -0
  144. package/dist/babylon/renderer/shadows/dynamic-shadow-system.d.ts +87 -0
  145. package/dist/babylon/renderer/shadows/dynamic-shadow-system.d.ts.map +1 -0
  146. package/dist/babylon/renderer/shadows/dynamic-shadow-system.js +659 -0
  147. package/dist/babylon/renderer/shadows/dynamic-shadow-system.js.map +1 -0
  148. package/dist/babylon/renderer/shadows/planar-shadow-shaders.d.ts +7 -0
  149. package/dist/babylon/renderer/shadows/planar-shadow-shaders.d.ts.map +1 -0
  150. package/dist/babylon/renderer/shadows/planar-shadow-shaders.js +316 -0
  151. package/dist/babylon/renderer/shadows/planar-shadow-shaders.js.map +1 -0
  152. package/dist/babylon/renderer/shadows/planar-shadow-system.d.ts +5 -0
  153. package/dist/babylon/renderer/shadows/planar-shadow-system.d.ts.map +1 -0
  154. package/dist/babylon/renderer/shadows/planar-shadow-system.js +1562 -0
  155. package/dist/babylon/renderer/shadows/planar-shadow-system.js.map +1 -0
  156. package/dist/babylon/renderer/shadows/shadow-generator-shaders.d.ts +14 -0
  157. package/dist/babylon/renderer/shadows/shadow-generator-shaders.d.ts.map +1 -0
  158. package/dist/babylon/renderer/shadows/shadow-generator-shaders.js +14 -0
  159. package/dist/babylon/renderer/shadows/shadow-generator-shaders.js.map +1 -0
  160. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.d.ts +69 -0
  161. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
  162. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.js +847 -0
  163. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
  164. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.d.ts +148 -0
  165. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.d.ts.map +1 -0
  166. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.js +4533 -0
  167. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.js.map +1 -0
  168. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.d.ts +4 -0
  169. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.d.ts.map +1 -0
  170. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.js +645 -0
  171. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.js.map +1 -0
  172. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.d.ts +61 -0
  173. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.d.ts.map +1 -0
  174. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.js +382 -0
  175. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.js.map +1 -0
  176. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.d.ts +47 -0
  177. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.d.ts.map +1 -0
  178. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.js +285 -0
  179. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.js.map +1 -0
  180. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.d.ts +88 -0
  181. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.d.ts.map +1 -0
  182. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.js +830 -0
  183. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.js.map +1 -0
  184. package/dist/babylon/renderer/shadows/static-projected-shadow-options.d.ts +3 -0
  185. package/dist/babylon/renderer/shadows/static-projected-shadow-options.d.ts.map +1 -0
  186. package/dist/babylon/renderer/shadows/static-projected-shadow-options.js +60 -0
  187. package/dist/babylon/renderer/shadows/static-projected-shadow-options.js.map +1 -0
  188. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.d.ts +27 -0
  189. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.d.ts.map +1 -0
  190. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.js +220 -0
  191. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.js.map +1 -0
  192. package/dist/babylon/renderer/shadows/types.d.ts +421 -0
  193. package/dist/babylon/renderer/shadows/types.d.ts.map +1 -0
  194. package/dist/babylon/renderer/shadows/types.js +127 -0
  195. package/dist/babylon/renderer/shadows/types.js.map +1 -0
  196. package/dist/babylon/renderer/world-rendering-controller.d.ts +29 -0
  197. package/dist/babylon/renderer/world-rendering-controller.d.ts.map +1 -0
  198. package/dist/babylon/renderer/world-rendering-controller.js +183 -0
  199. package/dist/babylon/renderer/world-rendering-controller.js.map +1 -0
  200. package/dist/babylon/renderer-controller.d.ts +93 -0
  201. package/dist/babylon/renderer-controller.d.ts.map +1 -0
  202. package/dist/babylon/renderer-controller.js +706 -0
  203. package/dist/babylon/renderer-controller.js.map +1 -0
  204. package/dist/babylon/scene-renderer.d.ts +20 -0
  205. package/dist/babylon/scene-renderer.d.ts.map +1 -0
  206. package/dist/babylon/scene-renderer.js +58 -0
  207. package/dist/babylon/scene-renderer.js.map +1 -0
  208. package/dist/babylon.d.ts +7 -0
  209. package/dist/babylon.d.ts.map +1 -1
  210. package/dist/babylon.js +7 -0
  211. package/dist/babylon.js.map +1 -1
  212. package/dist/build-info.json +4 -4
  213. package/dist/camera.d.ts +25 -0
  214. package/dist/camera.d.ts.map +1 -0
  215. package/dist/camera.js +68 -0
  216. package/dist/camera.js.map +1 -0
  217. package/dist/compiled-scene-data.d.ts +23 -0
  218. package/dist/compiled-scene-data.d.ts.map +1 -0
  219. package/dist/compiled-scene-data.js +100 -0
  220. package/dist/compiled-scene-data.js.map +1 -0
  221. package/dist/config.d.ts +9 -3
  222. package/dist/config.d.ts.map +1 -1
  223. package/dist/config.js +21 -0
  224. package/dist/config.js.map +1 -1
  225. package/dist/frame.d.ts +32 -0
  226. package/dist/frame.d.ts.map +1 -0
  227. package/dist/frame.js +54 -0
  228. package/dist/frame.js.map +1 -0
  229. package/dist/ground-decal.d.ts +22 -0
  230. package/dist/ground-decal.d.ts.map +1 -0
  231. package/dist/ground-decal.js +48 -0
  232. package/dist/ground-decal.js.map +1 -0
  233. package/dist/index.d.ts +16 -1
  234. package/dist/index.d.ts.map +1 -1
  235. package/dist/index.js +16 -1
  236. package/dist/index.js.map +1 -1
  237. package/dist/lighting.d.ts +13 -5
  238. package/dist/lighting.d.ts.map +1 -1
  239. package/dist/lighting.js +11 -5
  240. package/dist/lighting.js.map +1 -1
  241. package/dist/material-owner.d.ts +141 -0
  242. package/dist/material-owner.d.ts.map +1 -0
  243. package/dist/material-owner.js +552 -0
  244. package/dist/material-owner.js.map +1 -0
  245. package/dist/material-profile.d.ts +62 -0
  246. package/dist/material-profile.d.ts.map +1 -0
  247. package/dist/material-profile.js +132 -0
  248. package/dist/material-profile.js.map +1 -0
  249. package/dist/rendering/index.d.ts +14 -0
  250. package/dist/rendering/index.d.ts.map +1 -0
  251. package/dist/rendering/index.js +12 -0
  252. package/dist/rendering/index.js.map +1 -0
  253. package/dist/rendering/rendering-profile-types.d.ts +322 -0
  254. package/dist/rendering/rendering-profile-types.d.ts.map +1 -0
  255. package/dist/rendering/rendering-profile-types.js +2 -0
  256. package/dist/rendering/rendering-profile-types.js.map +1 -0
  257. package/dist/rendering/rendering-profile-validation.d.ts +2 -0
  258. package/dist/rendering/rendering-profile-validation.d.ts.map +1 -0
  259. package/dist/rendering/rendering-profile-validation.js +364 -0
  260. package/dist/rendering/rendering-profile-validation.js.map +1 -0
  261. package/dist/rendering/rendering-profile-values.d.ts +19 -0
  262. package/dist/rendering/rendering-profile-values.d.ts.map +1 -0
  263. package/dist/rendering/rendering-profile-values.js +79 -0
  264. package/dist/rendering/rendering-profile-values.js.map +1 -0
  265. package/dist/rendering/rendering-profile.d.ts +15 -0
  266. package/dist/rendering/rendering-profile.d.ts.map +1 -0
  267. package/dist/rendering/rendering-profile.js +442 -0
  268. package/dist/rendering/rendering-profile.js.map +1 -0
  269. package/dist/rendering/shadow-map-experiment-depth.d.ts +63 -0
  270. package/dist/rendering/shadow-map-experiment-depth.d.ts.map +1 -0
  271. package/dist/rendering/shadow-map-experiment-depth.js +186 -0
  272. package/dist/rendering/shadow-map-experiment-depth.js.map +1 -0
  273. package/dist/rendering/shadow-map-experiment-lifecycle.d.ts +94 -0
  274. package/dist/rendering/shadow-map-experiment-lifecycle.d.ts.map +1 -0
  275. package/dist/rendering/shadow-map-experiment-lifecycle.js +407 -0
  276. package/dist/rendering/shadow-map-experiment-lifecycle.js.map +1 -0
  277. package/dist/rendering/shadow-map-experiment.d.ts +189 -0
  278. package/dist/rendering/shadow-map-experiment.d.ts.map +1 -0
  279. package/dist/rendering/shadow-map-experiment.js +549 -0
  280. package/dist/rendering/shadow-map-experiment.js.map +1 -0
  281. package/dist/rendering/shadow-quality.d.ts +5 -0
  282. package/dist/rendering/shadow-quality.d.ts.map +1 -0
  283. package/dist/rendering/shadow-quality.js +83 -0
  284. package/dist/rendering/shadow-quality.js.map +1 -0
  285. package/dist/rendering/shadow-runtime.d.ts +59 -0
  286. package/dist/rendering/shadow-runtime.d.ts.map +1 -0
  287. package/dist/rendering/shadow-runtime.js +378 -0
  288. package/dist/rendering/shadow-runtime.js.map +1 -0
  289. package/dist/rendering/shadow-settings.d.ts +15 -0
  290. package/dist/rendering/shadow-settings.d.ts.map +1 -0
  291. package/dist/rendering/shadow-settings.js +129 -0
  292. package/dist/rendering/shadow-settings.js.map +1 -0
  293. package/dist/rendering/shadow-types.d.ts +99 -0
  294. package/dist/rendering/shadow-types.d.ts.map +1 -0
  295. package/dist/rendering/shadow-types.js +5 -0
  296. package/dist/rendering/shadow-types.js.map +1 -0
  297. package/dist/rendering/shadow-validation.d.ts +3 -0
  298. package/dist/rendering/shadow-validation.d.ts.map +1 -0
  299. package/dist/rendering/shadow-validation.js +166 -0
  300. package/dist/rendering/shadow-validation.js.map +1 -0
  301. package/dist/rendering/value.d.ts +2 -0
  302. package/dist/rendering/value.d.ts.map +1 -0
  303. package/dist/rendering/value.js +6 -0
  304. package/dist/rendering/value.js.map +1 -0
  305. package/dist/runtime-data-token.d.ts +4 -0
  306. package/dist/runtime-data-token.d.ts.map +1 -0
  307. package/dist/runtime-data-token.js +4 -0
  308. package/dist/runtime-data-token.js.map +1 -0
  309. package/dist/runtime-data-types.d.ts +83 -0
  310. package/dist/runtime-data-types.d.ts.map +1 -0
  311. package/dist/runtime-data-types.js +2 -0
  312. package/dist/runtime-data-types.js.map +1 -0
  313. package/dist/runtime-data.d.ts +18 -0
  314. package/dist/runtime-data.d.ts.map +1 -0
  315. package/dist/runtime-data.js +301 -0
  316. package/dist/runtime-data.js.map +1 -0
  317. package/dist/runtime-scene-resolvers.d.ts +33 -0
  318. package/dist/runtime-scene-resolvers.d.ts.map +1 -0
  319. package/dist/runtime-scene-resolvers.js +36 -0
  320. package/dist/runtime-scene-resolvers.js.map +1 -0
  321. package/dist/scene-artifact-types.d.ts +385 -0
  322. package/dist/scene-artifact-types.d.ts.map +1 -0
  323. package/dist/scene-artifact-types.js +2 -0
  324. package/dist/scene-artifact-types.js.map +1 -0
  325. package/dist/scene-artifact-validation.d.ts +20 -0
  326. package/dist/scene-artifact-validation.d.ts.map +1 -0
  327. package/dist/scene-artifact-validation.js +1402 -0
  328. package/dist/scene-artifact-validation.js.map +1 -0
  329. package/dist/static-shadow-artifact.d.ts +131 -0
  330. package/dist/static-shadow-artifact.d.ts.map +1 -0
  331. package/dist/static-shadow-artifact.js +327 -0
  332. package/dist/static-shadow-artifact.js.map +1 -0
  333. package/package.json +51 -1
@@ -0,0 +1,45 @@
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
+ /**
40
+ * Vite `import x from "file.env?url"` often yields `file.env?import&url`.
41
+ * Fetching that URL returns a JS module, not asset bytes. Babylon/runtime
42
+ * loaders must receive the bytes URL. Version queries such as `?v=7` stay.
43
+ */
44
+ export declare function normalizeFpsAssetBytesUrl(url: string): string;
45
+ //# 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,CAsC1B;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;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAe7D"}
@@ -0,0 +1,147 @@
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
+ const bytesUrl = normalizeFpsAssetBytesUrl(entry.url);
24
+ return resolved({
25
+ assetId: entry.assetId,
26
+ url: bytesUrl,
27
+ format: entry.format,
28
+ transport: getFpsAssetResourceTransport(bytesUrl),
29
+ relativePath: entry.relativePath,
30
+ originalFileName: entry.originalFileName ?? null,
31
+ });
32
+ }
33
+ if (!url)
34
+ return failed('asset.resource.invalid-reference', null, null, null, null);
35
+ const bytesUrl = normalizeFpsAssetBytesUrl(url);
36
+ const transport = getFpsAssetResourceTransport(bytesUrl);
37
+ if (transport === 'data-url' || transport === 'blob-url') {
38
+ return failed('asset.resource.format-missing', null, null, transport, bytesUrl);
39
+ }
40
+ const format = getFpsAssetFormat(bytesUrl);
41
+ if (!format)
42
+ return failed('asset.resource.format-missing', null, null, transport, bytesUrl);
43
+ if (!isFpsAssetFormatSupported(format)) {
44
+ return failed('asset.resource.format-unsupported', null, format, transport, bytesUrl);
45
+ }
46
+ return resolved({ assetId: null, url: bytesUrl, format, transport, relativePath: null, originalFileName: null });
47
+ },
48
+ });
49
+ }
50
+ export function getFpsAssetFormat(value) {
51
+ const normalized = String(value ?? '').trim().toLowerCase();
52
+ if (/^\.[a-z0-9]+$/.test(normalized))
53
+ return normalized;
54
+ const path = normalized.split(/[?#]/, 1)[0] ?? '';
55
+ const fileName = path.slice(path.lastIndexOf('/') + 1);
56
+ const dot = fileName.lastIndexOf('.');
57
+ if (dot <= 0 || dot === fileName.length - 1)
58
+ return null;
59
+ return fileName.slice(dot);
60
+ }
61
+ export function isFpsAssetFormatSupported(format) {
62
+ return FPS_SUPPORTED_ASSET_FORMATS.has(format);
63
+ }
64
+ export function getFpsAssetResourceTransport(url) {
65
+ if (/^data:/i.test(url))
66
+ return 'data-url';
67
+ if (/^blob:/i.test(url))
68
+ return 'blob-url';
69
+ if (/^https?:/i.test(url))
70
+ return 'http-url';
71
+ return 'path-url';
72
+ }
73
+ /**
74
+ * Vite `import x from "file.env?url"` often yields `file.env?import&url`.
75
+ * Fetching that URL returns a JS module, not asset bytes. Babylon/runtime
76
+ * loaders must receive the bytes URL. Version queries such as `?v=7` stay.
77
+ */
78
+ export function normalizeFpsAssetBytesUrl(url) {
79
+ const trimmed = url.trim();
80
+ if (!trimmed || /^data:/i.test(trimmed) || /^blob:/i.test(trimmed))
81
+ return trimmed;
82
+ const hashIndex = trimmed.indexOf('#');
83
+ const withoutHash = hashIndex === -1 ? trimmed : trimmed.slice(0, hashIndex);
84
+ const hash = hashIndex === -1 ? '' : trimmed.slice(hashIndex);
85
+ const queryIndex = withoutHash.indexOf('?');
86
+ if (queryIndex === -1)
87
+ return trimmed;
88
+ const pathname = withoutHash.slice(0, queryIndex);
89
+ const params = new URLSearchParams(withoutHash.slice(queryIndex + 1));
90
+ if (!params.has('import') || !params.has('url'))
91
+ return trimmed;
92
+ params.delete('import');
93
+ params.delete('url');
94
+ const rest = params.toString();
95
+ return rest ? `${pathname}?${rest}${hash}` : `${pathname}${hash}`;
96
+ }
97
+ function normalizeCatalogEntry(catalogAssetId, input) {
98
+ const assetId = normalizeRequiredString(input?.assetId, `Generated asset catalog entry ${catalogAssetId} assetId`);
99
+ if (assetId !== catalogAssetId)
100
+ throw new Error(`Generated asset catalog key/id mismatch: ${catalogAssetId}`);
101
+ const url = normalizeRequiredString(input.url, `Generated asset catalog entry ${assetId} url`);
102
+ const relativePath = normalizeRequiredString(input.relativePath, `Generated asset catalog entry ${assetId} relativePath`);
103
+ const format = normalizeFormat(input.format, `Generated asset catalog entry ${assetId} format`);
104
+ const derivedFormat = getFpsAssetFormat(relativePath);
105
+ if (derivedFormat !== format)
106
+ throw new Error(`Generated asset catalog entry ${assetId} format must match relativePath.`);
107
+ if (!isFpsAssetFormatSupported(format))
108
+ throw new Error(`Generated asset catalog entry ${assetId} has unsupported format: ${format}`);
109
+ const originalFileName = normalizeOptionalString(input.originalFileName);
110
+ return Object.freeze({ assetId, url, format, relativePath, ...(originalFileName ? { originalFileName } : {}) });
111
+ }
112
+ function normalizeFormat(value, label) {
113
+ const format = getFpsAssetFormat(String(value ?? ''));
114
+ if (!format || format !== String(value).trim().toLowerCase())
115
+ throw new Error(`${label} must be a normalized file extension.`);
116
+ return format;
117
+ }
118
+ function normalizeRequiredString(value, label) {
119
+ const result = normalizeOptionalString(value);
120
+ if (!result)
121
+ throw new Error(`${label} is required.`);
122
+ return result;
123
+ }
124
+ function normalizeOptionalString(value) {
125
+ if (typeof value !== 'string')
126
+ return null;
127
+ const result = value.trim();
128
+ return result || null;
129
+ }
130
+ function resolved(resource) {
131
+ return Object.freeze({ ok: true, resource: Object.freeze(resource) });
132
+ }
133
+ function failed(code, assetId, format, transport, url) {
134
+ return Object.freeze({ ok: false, diagnostic: Object.freeze({
135
+ code, assetId, format, transport, urlSummary: summarizeUrl(url),
136
+ }) });
137
+ }
138
+ function summarizeUrl(url) {
139
+ if (!url)
140
+ return null;
141
+ if (/^data:/i.test(url))
142
+ return 'data:<redacted>';
143
+ if (/^blob:/i.test(url))
144
+ return 'blob:<redacted>';
145
+ return url.length <= 160 ? url : `${url.slice(0, 157)}...`;
146
+ }
147
+ //# 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,25 @@
1
+ import { Camera } from '@babylonjs/core/Cameras/camera.js';
2
+ import type { Scene } from '@babylonjs/core/scene.js';
3
+ import { type FpsCameraProjectionSnapshot } from '../camera.js';
4
+ export interface FpsBabylonCameraRegistration {
5
+ dispose(): void;
6
+ }
7
+ export interface FpsBabylonCameraResource<TCamera extends Camera = Camera> {
8
+ readonly camera: TCamera;
9
+ isDisposed(): boolean;
10
+ dispose(): void;
11
+ }
12
+ export interface CreateFpsBabylonCameraResourceOptions<TCamera extends Camera> {
13
+ readonly scene: Scene;
14
+ readonly camera: TCamera;
15
+ readonly registration?: FpsBabylonCameraRegistration | null;
16
+ }
17
+ /**
18
+ * Transfers an already-created Camera and its renderer registration to one
19
+ * retryable owner. Project policy still decides camera type, active-camera
20
+ * routing and when the resource is created.
21
+ */
22
+ export declare function createFpsBabylonCameraResource<TCamera extends Camera>(options: CreateFpsBabylonCameraResourceOptions<TCamera>): FpsBabylonCameraResource<TCamera>;
23
+ export declare function applyFpsBabylonCameraProjection(camera: Camera, value: unknown, path?: string): Readonly<FpsCameraProjectionSnapshot>;
24
+ export declare function resizeFpsBabylonCameraProjection(camera: Camera, value: unknown, path?: string): Readonly<FpsCameraProjectionSnapshot>;
25
+ //# sourceMappingURL=camera.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../src/babylon/camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,4BAA4B;IAC3C,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACvE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,qCAAqC,CAAC,OAAO,SAAS,MAAM;IAC3E,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,4BAA4B,GAAG,IAAI,CAAC;CAC7D;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,SAAS,MAAM,EACnE,OAAO,EAAE,qCAAqC,CAAC,OAAO,CAAC,GACtD,wBAAwB,CAAC,OAAO,CAAC,CAuCnC;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,IAAI,SAAuB,GAC1B,QAAQ,CAAC,2BAA2B,CAAC,CAuBvC;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EACd,IAAI,SAAuB,GAC1B,QAAQ,CAAC,2BAA2B,CAAC,CAkBvC"}
@@ -0,0 +1,149 @@
1
+ import { Camera } from '@babylonjs/core/Cameras/camera.js';
2
+ import { createFpsCameraProjectionSnapshot, } from '../camera.js';
3
+ /**
4
+ * Transfers an already-created Camera and its renderer registration to one
5
+ * retryable owner. Project policy still decides camera type, active-camera
6
+ * routing and when the resource is created.
7
+ */
8
+ export function createFpsBabylonCameraResource(options) {
9
+ const { camera, scene } = options;
10
+ if (!camera || typeof camera.getScene !== 'function' || camera.getScene() !== scene) {
11
+ throw Object.assign(new Error('Babylon Camera resource belongs to a different Scene.'), { code: 'camera.resource.sceneMismatch' });
12
+ }
13
+ if (camera.isDisposed()) {
14
+ throw Object.assign(new Error('Babylon Camera resource is already disposed.'), { code: 'camera.resource.alreadyDisposed' });
15
+ }
16
+ if (options.registration && typeof options.registration.dispose !== 'function') {
17
+ throw Object.assign(new Error('Babylon Camera registration must provide dispose().'), { code: 'camera.resource.registrationInvalid' });
18
+ }
19
+ let registration = options.registration ?? null;
20
+ let disposed = false;
21
+ return Object.freeze({
22
+ camera,
23
+ isDisposed() {
24
+ return disposed;
25
+ },
26
+ dispose() {
27
+ if (disposed)
28
+ return;
29
+ if (registration) {
30
+ registration.dispose();
31
+ registration = null;
32
+ }
33
+ camera.dispose();
34
+ disposed = true;
35
+ },
36
+ });
37
+ }
38
+ export function applyFpsBabylonCameraProjection(camera, value, path = '$.cameraProjection') {
39
+ const snapshot = createFpsCameraProjectionSnapshot(value, path);
40
+ const previous = captureProjectionState(camera);
41
+ try {
42
+ camera.minZ = snapshot.minZ;
43
+ camera.maxZ = snapshot.maxZ;
44
+ camera.fov = snapshot.fov;
45
+ camera.mode = snapshot.projection === 'perspective'
46
+ ? Camera.PERSPECTIVE_CAMERA
47
+ : Camera.ORTHOGRAPHIC_CAMERA;
48
+ applyOrthographicExtents(camera, snapshot);
49
+ camera.getProjectionMatrix(true);
50
+ return snapshot;
51
+ }
52
+ catch (error) {
53
+ const cleanupErrors = [];
54
+ try {
55
+ restoreProjectionState(camera, previous);
56
+ camera.getProjectionMatrix(true);
57
+ }
58
+ catch (cleanupError) {
59
+ cleanupErrors.push(cleanupError);
60
+ }
61
+ throw addFailureMetadata(error, 'Babylon Camera projection apply failed.', cleanupErrors);
62
+ }
63
+ }
64
+ export function resizeFpsBabylonCameraProjection(camera, value, path = '$.cameraProjection') {
65
+ const snapshot = createFpsCameraProjectionSnapshot(value, path);
66
+ if (snapshot.projection !== 'orthographic')
67
+ return snapshot;
68
+ const previous = captureOrthographicExtents(camera);
69
+ try {
70
+ applyOrthographicExtents(camera, snapshot);
71
+ camera.getProjectionMatrix(true);
72
+ return snapshot;
73
+ }
74
+ catch (error) {
75
+ const cleanupErrors = [];
76
+ try {
77
+ restoreOrthographicExtents(camera, previous);
78
+ camera.getProjectionMatrix(true);
79
+ }
80
+ catch (cleanupError) {
81
+ cleanupErrors.push(cleanupError);
82
+ }
83
+ throw addFailureMetadata(error, 'Babylon Camera projection resize failed.', cleanupErrors);
84
+ }
85
+ }
86
+ function applyOrthographicExtents(camera, snapshot) {
87
+ if (snapshot.projection !== 'orthographic')
88
+ return;
89
+ const engine = camera.getScene().getEngine();
90
+ const width = readPositiveDimension(engine.getRenderWidth());
91
+ const height = readPositiveDimension(engine.getRenderHeight());
92
+ const halfHeight = snapshot.orthoSize;
93
+ const halfWidth = halfHeight * (width / height);
94
+ camera.orthoLeft = -halfWidth;
95
+ camera.orthoRight = halfWidth;
96
+ camera.orthoBottom = -halfHeight;
97
+ camera.orthoTop = halfHeight;
98
+ }
99
+ function captureProjectionState(camera) {
100
+ return {
101
+ mode: camera.mode,
102
+ fov: camera.fov,
103
+ minZ: camera.minZ,
104
+ maxZ: camera.maxZ,
105
+ ...captureOrthographicExtents(camera),
106
+ };
107
+ }
108
+ function restoreProjectionState(camera, state) {
109
+ camera.mode = state.mode;
110
+ camera.fov = state.fov;
111
+ camera.minZ = state.minZ;
112
+ camera.maxZ = state.maxZ;
113
+ restoreOrthographicExtents(camera, state);
114
+ }
115
+ function captureOrthographicExtents(camera) {
116
+ return {
117
+ orthoLeft: camera.orthoLeft,
118
+ orthoRight: camera.orthoRight,
119
+ orthoTop: camera.orthoTop,
120
+ orthoBottom: camera.orthoBottom,
121
+ };
122
+ }
123
+ function restoreOrthographicExtents(camera, state) {
124
+ camera.orthoLeft = state.orthoLeft;
125
+ camera.orthoRight = state.orthoRight;
126
+ camera.orthoTop = state.orthoTop;
127
+ camera.orthoBottom = state.orthoBottom;
128
+ }
129
+ function readPositiveDimension(value) {
130
+ return Number.isFinite(value) && value > 0 ? value : 1;
131
+ }
132
+ function addFailureMetadata(failure, fallbackMessage, cleanupErrors) {
133
+ if (cleanupErrors.length === 0)
134
+ return failure;
135
+ if (failure && (typeof failure === 'object' || typeof failure === 'function')) {
136
+ try {
137
+ Object.assign(failure, { cleanupErrors: Object.freeze([...cleanupErrors]) });
138
+ return failure;
139
+ }
140
+ catch {
141
+ // Fall through to a wrapper when the original error is immutable.
142
+ }
143
+ }
144
+ return Object.assign(new Error(fallbackMessage), {
145
+ cause: failure,
146
+ cleanupErrors: Object.freeze([...cleanupErrors]),
147
+ });
148
+ }
149
+ //# sourceMappingURL=camera.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../../src/babylon/camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,OAAO,EACL,iCAAiC,GAElC,MAAM,cAAc,CAAC;AAkBtB;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAuD;IAEvD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAClC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE,CAAC;QACpF,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,uDAAuD,CAAC,EAClE,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAC1C,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACxB,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,8CAA8C,CAAC,EACzD,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAC5C,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAC/E,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,qDAAqD,CAAC,EAChE,EAAE,IAAI,EAAE,qCAAqC,EAAE,CAChD,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;IAChD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM;QACN,UAAU;YACR,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO;YACL,IAAI,QAAQ;gBAAE,OAAO;YACrB,IAAI,YAAY,EAAE,CAAC;gBACjB,YAAY,CAAC,OAAO,EAAE,CAAC;gBACvB,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,MAAc,EACd,KAAc,EACd,IAAI,GAAG,oBAAoB;IAE3B,MAAM,QAAQ,GAAG,iCAAiC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC5B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC5B,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC1B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,UAAU,KAAK,aAAa;YACjD,CAAC,CAAC,MAAM,CAAC,kBAAkB;YAC3B,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC/B,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAc,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACzC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,kBAAkB,CAAC,KAAK,EAAE,yCAAyC,EAAE,aAAa,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAAc,EACd,KAAc,EACd,IAAI,GAAG,oBAAoB;IAE3B,MAAM,QAAQ,GAAG,iCAAiC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChE,IAAI,QAAQ,CAAC,UAAU,KAAK,cAAc;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,QAAQ,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAc,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,kBAAkB,CAAC,KAAK,EAAE,0CAA0C,EAAE,aAAa,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAkBD,SAAS,wBAAwB,CAC/B,MAAc,EACd,QAA+C;IAE/C,IAAI,QAAQ,CAAC,UAAU,KAAK,cAAc;QAAE,OAAO;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;IACtC,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IAChD,MAAM,CAAC,SAAS,GAAG,CAAC,SAAS,CAAC;IAC9B,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC;IACjC,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC/B,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAc;IAC5C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,0BAA0B,CAAC,MAAM,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAc,EACd,KAAmC;IAEnC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACzB,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACvB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACzB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACzB,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAc;IAChD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,MAAc,EACd,KAAuC;IAEvC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACnC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACrC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACjC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACzC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAgB,EAChB,eAAuB,EACvB,aAAiC;IAEjC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAC/C,IAAI,OAAO,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,UAAU,CAAC,EAAE,CAAC;QAC9E,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7E,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE;QAC/C,KAAK,EAAE,OAAO;QACd,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;KACjD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Engine } from '@babylonjs/core/Engines/engine.js';
2
+ import { type FpsFrameClock, type FpsFrameClockOptions, type FpsFrameContext } from '../frame.js';
3
+ export interface CreateFpsBabylonFramePumpOptions {
4
+ readonly engine: Engine;
5
+ readonly onFrame: (frame: Readonly<FpsFrameContext>) => void;
6
+ readonly clock?: FpsFrameClock;
7
+ readonly clockOptions?: FpsFrameClockOptions;
8
+ readonly now?: () => number;
9
+ }
10
+ export interface FpsBabylonFramePump {
11
+ readonly clock: FpsFrameClock;
12
+ isRunning(): boolean;
13
+ isDisposed(): boolean;
14
+ start(): void;
15
+ stop(): void;
16
+ dispose(): void;
17
+ }
18
+ /**
19
+ * Owns only Babylon's outer runRenderLoop registration and frame timing.
20
+ *
21
+ * The callback remains the composition boundary: it can drive the shared
22
+ * Runtime Plugin scheduler, project gameplay, cleanup and Scene rendering in
23
+ * the order selected by the project. The pump does not introduce a competing
24
+ * phase scheduler and does not own the Engine or Scene.
25
+ */
26
+ export declare function createFpsBabylonFramePump(options: CreateFpsBabylonFramePumpOptions): FpsBabylonFramePump;
27
+ //# sourceMappingURL=frame-pump.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-pump.d.ts","sourceRoot":"","sources":["../../src/babylon/frame-pump.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,SAAS,IAAI,OAAO,CAAC;IACrB,UAAU,IAAI,OAAO,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,mBAAmB,CAqDrB"}
@@ -0,0 +1,90 @@
1
+ import { createFpsFrameClock, } from '../frame.js';
2
+ /**
3
+ * Owns only Babylon's outer runRenderLoop registration and frame timing.
4
+ *
5
+ * The callback remains the composition boundary: it can drive the shared
6
+ * Runtime Plugin scheduler, project gameplay, cleanup and Scene rendering in
7
+ * the order selected by the project. The pump does not introduce a competing
8
+ * phase scheduler and does not own the Engine or Scene.
9
+ */
10
+ export function createFpsBabylonFramePump(options) {
11
+ assertOptions(options);
12
+ if (options.clock && options.clockOptions) {
13
+ throw new Error('Babylon Frame Pump accepts either clock or clockOptions, not both.');
14
+ }
15
+ const clock = options.clock ?? createFpsFrameClock(options.clockOptions);
16
+ const now = options.now ?? readNowMs;
17
+ let running = false;
18
+ let disposed = false;
19
+ const renderLoop = () => {
20
+ if (!running)
21
+ return;
22
+ options.onFrame(clock.beginFrame(now()));
23
+ };
24
+ return Object.freeze({
25
+ clock,
26
+ isRunning() {
27
+ return running;
28
+ },
29
+ isDisposed() {
30
+ return disposed;
31
+ },
32
+ start() {
33
+ assertOpen(disposed);
34
+ if (running)
35
+ return;
36
+ clock.resetTime();
37
+ running = true;
38
+ try {
39
+ options.engine.runRenderLoop(renderLoop);
40
+ }
41
+ catch (error) {
42
+ running = false;
43
+ clock.resetTime();
44
+ throw error;
45
+ }
46
+ },
47
+ stop() {
48
+ if (!running)
49
+ return;
50
+ options.engine.stopRenderLoop(renderLoop);
51
+ running = false;
52
+ clock.resetTime();
53
+ },
54
+ dispose() {
55
+ if (disposed)
56
+ return;
57
+ if (running) {
58
+ options.engine.stopRenderLoop(renderLoop);
59
+ running = false;
60
+ clock.resetTime();
61
+ }
62
+ disposed = true;
63
+ },
64
+ });
65
+ }
66
+ function assertOptions(options) {
67
+ if (!options || typeof options !== 'object') {
68
+ throw new Error('Babylon Frame Pump options are required.');
69
+ }
70
+ if (!options.engine
71
+ || typeof options.engine.runRenderLoop !== 'function'
72
+ || typeof options.engine.stopRenderLoop !== 'function') {
73
+ throw new Error('Babylon Frame Pump requires an Engine.');
74
+ }
75
+ if (typeof options.onFrame !== 'function') {
76
+ throw new Error('Babylon Frame Pump onFrame callback is required.');
77
+ }
78
+ if (options.now !== undefined && typeof options.now !== 'function') {
79
+ throw new Error('Babylon Frame Pump now must be a function.');
80
+ }
81
+ }
82
+ function assertOpen(disposed) {
83
+ if (disposed)
84
+ throw new Error('Babylon Frame Pump is disposed.');
85
+ }
86
+ function readNowMs() {
87
+ const hostPerformance = globalThis.performance;
88
+ return hostPerformance ? hostPerformance.now() : Date.now();
89
+ }
90
+ //# sourceMappingURL=frame-pump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-pump.js","sourceRoot":"","sources":["../../src/babylon/frame-pump.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"}