@zephyr3d/scene 0.9.5 → 0.9.7

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 (621) hide show
  1. package/dist/animation/joint_dynamics/controller.js +92 -32
  2. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  3. package/dist/animation/joint_dynamics/convex_collider.js +320 -0
  4. package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
  5. package/dist/animation/joint_dynamics/joint_dynamics_system.js +57 -19
  6. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  7. package/dist/animation/joint_dynamics/solver.js +71 -27
  8. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  9. package/dist/animation/joint_dynamics_modifier.js +21 -20
  10. package/dist/animation/joint_dynamics_modifier.js.map +1 -1
  11. package/dist/animation/skeleton.js +7 -10
  12. package/dist/animation/skeleton.js.map +1 -1
  13. package/dist/app/engine.js +134 -140
  14. package/dist/app/engine.js.map +1 -1
  15. package/dist/app/scriptregistry.js +47 -16
  16. package/dist/app/scriptregistry.js.map +1 -1
  17. package/dist/asset/assetmanager.js +3 -1
  18. package/dist/asset/assetmanager.js.map +1 -1
  19. package/dist/asset/model.js +346 -7
  20. package/dist/asset/model.js.map +1 -1
  21. package/dist/avatar/wardrobe.js +20 -16
  22. package/dist/avatar/wardrobe.js.map +1 -1
  23. package/dist/camera/camera.js +416 -210
  24. package/dist/camera/camera.js.map +1 -1
  25. package/dist/index.d.ts +1350 -621
  26. package/dist/index.js +6 -11
  27. package/dist/index.js.map +1 -1
  28. package/dist/material/blinn.js +1 -1
  29. package/dist/material/blinn.js.map +1 -1
  30. package/dist/material/lambert.js +1 -1
  31. package/dist/material/lambert.js.map +1 -1
  32. package/dist/material/material.js +23 -1
  33. package/dist/material/material.js.map +1 -1
  34. package/dist/material/meshmaterial.js +178 -23
  35. package/dist/material/meshmaterial.js.map +1 -1
  36. package/dist/material/mixins/albedocolor.js +4 -4
  37. package/dist/material/mixins/albedocolor.js.map +1 -1
  38. package/dist/material/mixins/lightmodel/blinnphong.js +2 -1
  39. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  40. package/dist/material/mixins/lightmodel/lambert.js +2 -1
  41. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  42. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +63 -16
  43. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  44. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +105 -32
  45. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  46. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -6
  47. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  48. package/dist/material/mixins/lit.js +1 -1
  49. package/dist/material/mixins/lit.js.map +1 -1
  50. package/dist/material/mixins/pbr/common.js +276 -65
  51. package/dist/material/mixins/pbr/common.js.map +1 -1
  52. package/dist/material/mixins/texture.js +3 -3
  53. package/dist/material/mixins/texture.js.map +1 -1
  54. package/dist/material/mixins/vertexcolor.js +2 -2
  55. package/dist/material/mixins/vertexcolor.js.map +1 -1
  56. package/dist/material/msdf_text.js +3 -3
  57. package/dist/material/msdf_text.js.map +1 -1
  58. package/dist/material/mtoon.js +574 -0
  59. package/dist/material/mtoon.js.map +1 -0
  60. package/dist/material/pbrblueprint.js +499 -336
  61. package/dist/material/pbrblueprint.js.map +1 -1
  62. package/dist/material/pbrmr.js +118 -100
  63. package/dist/material/pbrmr.js.map +1 -1
  64. package/dist/material/pbrsg.js +1 -1
  65. package/dist/material/pbrsg.js.map +1 -1
  66. package/dist/material/shader/helper.js +324 -294
  67. package/dist/material/shader/helper.js.map +1 -1
  68. package/dist/material/subsurfaceprofile.js +812 -0
  69. package/dist/material/subsurfaceprofile.js.map +1 -0
  70. package/dist/material/unlit.js +1 -1
  71. package/dist/material/unlit.js.map +1 -1
  72. package/dist/posteffect/compositor.js +46 -11
  73. package/dist/posteffect/compositor.js.map +1 -1
  74. package/dist/posteffect/ssr.js +422 -96
  75. package/dist/posteffect/ssr.js.map +1 -1
  76. package/dist/posteffect/sss.js +1053 -0
  77. package/dist/posteffect/sss.js.map +1 -0
  78. package/dist/posteffect/taa.js +61 -60
  79. package/dist/posteffect/taa.js.map +1 -1
  80. package/dist/render/abuffer_oit.js +63 -12
  81. package/dist/render/abuffer_oit.js.map +1 -1
  82. package/dist/render/cluster_light.js +6 -5
  83. package/dist/render/cluster_light.js.map +1 -1
  84. package/dist/render/drawable.js +1 -5
  85. package/dist/render/drawable.js.map +1 -1
  86. package/dist/render/drawable_mixin.js +2 -1
  87. package/dist/render/drawable_mixin.js.map +1 -1
  88. package/dist/render/fbm_wavegenerator.js +2 -1
  89. package/dist/render/fbm_wavegenerator.js.map +1 -1
  90. package/dist/render/gerstner_wavegenerator.js +2 -1
  91. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  92. package/dist/render/globalbindgroup_allocator.js +2 -1
  93. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  94. package/dist/render/lightpass.js +110 -23
  95. package/dist/render/lightpass.js.map +1 -1
  96. package/dist/render/render_queue.js +51 -8
  97. package/dist/render/render_queue.js.map +1 -1
  98. package/dist/render/renderer.js +80 -66
  99. package/dist/render/renderer.js.map +1 -1
  100. package/dist/render/rendergraph/device_pool_allocator.js +8 -0
  101. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
  102. package/dist/render/rendergraph/forward_plus_builder.js +481 -95
  103. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  104. package/dist/render/rendergraph/history_resource_manager.js +55 -0
  105. package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
  106. package/dist/render/rendergraph/history_resources.js +3 -1
  107. package/dist/render/rendergraph/history_resources.js.map +1 -1
  108. package/dist/render/rendergraph/types.js.map +1 -1
  109. package/dist/render/renderpass.js +10 -4
  110. package/dist/render/renderpass.js.map +1 -1
  111. package/dist/render/sky.js +31 -1
  112. package/dist/render/sky.js.map +1 -1
  113. package/dist/render/weightedblended_oit.js +23 -5
  114. package/dist/render/weightedblended_oit.js.map +1 -1
  115. package/dist/scene/basesprite.js +4 -2
  116. package/dist/scene/basesprite.js.map +1 -1
  117. package/dist/scene/batchgroup.js +3 -1
  118. package/dist/scene/batchgroup.js.map +1 -1
  119. package/dist/scene/environment.js +11 -1
  120. package/dist/scene/environment.js.map +1 -1
  121. package/dist/scene/light.js +21 -3
  122. package/dist/scene/light.js.map +1 -1
  123. package/dist/scene/mesh.js +29 -14
  124. package/dist/scene/mesh.js.map +1 -1
  125. package/dist/scene/meshdrawable.js +6 -0
  126. package/dist/scene/meshdrawable.js.map +1 -1
  127. package/dist/scene/msdftext.js +5 -2
  128. package/dist/scene/msdftext.js.map +1 -1
  129. package/dist/scene/msdftextsprite.js +5 -3
  130. package/dist/scene/msdftextsprite.js.map +1 -1
  131. package/dist/scene/particlesys.js +3 -1
  132. package/dist/scene/particlesys.js.map +1 -1
  133. package/dist/scene/scene.js +6 -5
  134. package/dist/scene/scene.js.map +1 -1
  135. package/dist/scene/terrain-cm/grass.js +4 -2
  136. package/dist/scene/terrain-cm/grass.js.map +1 -1
  137. package/dist/scene/terrain-cm/grassmaterial.js +2 -1
  138. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  139. package/dist/scene/terrain-cm/terrain-cm.js +4 -2
  140. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  141. package/dist/scene/water.js +4 -2
  142. package/dist/scene/water.js.map +1 -1
  143. package/dist/shaders/shadow.js +26 -393
  144. package/dist/shaders/shadow.js.map +1 -1
  145. package/dist/shadow/esm.js +112 -12
  146. package/dist/shadow/esm.js.map +1 -1
  147. package/dist/shadow/pcf_opt.js +2 -2
  148. package/dist/shadow/pcf_opt.js.map +1 -1
  149. package/dist/shadow/pcf_pd.js +19 -10
  150. package/dist/shadow/pcf_pd.js.map +1 -1
  151. package/dist/shadow/shader.js +58 -7
  152. package/dist/shadow/shader.js.map +1 -1
  153. package/dist/shadow/shadow_impl.js +6 -0
  154. package/dist/shadow/shadow_impl.js.map +1 -1
  155. package/dist/shadow/shadow_region.js +229 -0
  156. package/dist/shadow/shadow_region.js.map +1 -0
  157. package/dist/shadow/shadowmapper.js +67 -59
  158. package/dist/shadow/shadowmapper.js.map +1 -1
  159. package/dist/shadow/vsm.js +45 -19
  160. package/dist/shadow/vsm.js.map +1 -1
  161. package/dist/text/font/cff_font.js +890 -0
  162. package/dist/text/font/cff_font.js.map +1 -0
  163. package/dist/text/font/font_asset.js +17 -3
  164. package/dist/text/font/font_asset.js.map +1 -1
  165. package/dist/utility/blueprint/common/constants.js +8 -8
  166. package/dist/utility/blueprint/common/constants.js.map +1 -1
  167. package/dist/utility/blueprint/material/pbr.js +31 -4
  168. package/dist/utility/blueprint/material/pbr.js.map +1 -1
  169. package/dist/utility/blueprint/material/texture.js +1 -17
  170. package/dist/utility/blueprint/material/texture.js.map +1 -1
  171. package/dist/utility/serialization/manager.js +327 -359
  172. package/dist/utility/serialization/manager.js.map +1 -1
  173. package/dist/utility/serialization/scene/animation.js +5 -2
  174. package/dist/utility/serialization/scene/animation.js.map +1 -1
  175. package/dist/utility/serialization/scene/batch.js +4 -1
  176. package/dist/utility/serialization/scene/batch.js.map +1 -1
  177. package/dist/utility/serialization/scene/camera.js +249 -54
  178. package/dist/utility/serialization/scene/camera.js.map +1 -1
  179. package/dist/utility/serialization/scene/common.js +37 -1
  180. package/dist/utility/serialization/scene/common.js.map +1 -1
  181. package/dist/utility/serialization/scene/light.js +42 -3
  182. package/dist/utility/serialization/scene/light.js.map +1 -1
  183. package/dist/utility/serialization/scene/material.js +1112 -646
  184. package/dist/utility/serialization/scene/material.js.map +1 -1
  185. package/dist/utility/serialization/scene/mesh.js +7 -4
  186. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  187. package/dist/utility/serialization/scene/node.js +31 -12
  188. package/dist/utility/serialization/scene/node.js.map +1 -1
  189. package/dist/utility/serialization/scene/particle.js +4 -1
  190. package/dist/utility/serialization/scene/particle.js.map +1 -1
  191. package/dist/utility/serialization/scene/primitive.js +3 -1
  192. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  193. package/dist/utility/serialization/scene/scene.js +18 -0
  194. package/dist/utility/serialization/scene/scene.js.map +1 -1
  195. package/dist/utility/serialization/scene/sprite.js +6 -3
  196. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  197. package/dist/utility/serialization/scene/terrain.js +5 -2
  198. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  199. package/dist/utility/serialization/scene/text.js +3 -1
  200. package/dist/utility/serialization/scene/text.js.map +1 -1
  201. package/dist/utility/serialization/scene/water.js +4 -1
  202. package/dist/utility/serialization/scene/water.js.map +1 -1
  203. package/dist/utility/textures/ltcdata.js +6 -0
  204. package/dist/utility/textures/ltcdata.js.map +1 -0
  205. package/dist/utility/textures/ltclut.js +61 -0
  206. package/dist/utility/textures/ltclut.js.map +1 -0
  207. package/dist/values.js +9 -1
  208. package/dist/values.js.map +1 -1
  209. package/package.json +3 -3
  210. package/dist/animation/ik/ik_chain_builder.js +0 -68
  211. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  212. package/dist/animation/ik/ik_pole_constraint.js +0 -123
  213. package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
  214. package/dist/animation/ik/ik_track.js +0 -96
  215. package/dist/animation/ik/ik_track.js.map +0 -1
  216. package/dist/animation/ik_postprocessor.js +0 -71
  217. package/dist/animation/ik_postprocessor.js.map +0 -1
  218. package/dist/animation/joint_dynamics/math.js +0 -16
  219. package/dist/animation/joint_dynamics/math.js.map +0 -1
  220. package/dist/animation/manual_transform_processor.js +0 -156
  221. package/dist/animation/manual_transform_processor.js.map +0 -1
  222. package/dist/animation/skeleton_postprocessor.js +0 -50
  223. package/dist/animation/skeleton_postprocessor.js.map +0 -1
  224. package/dist/animation/spring2/collision.js +0 -469
  225. package/dist/animation/spring2/collision.js.map +0 -1
  226. package/dist/animation/spring2/constraints.js +0 -329
  227. package/dist/animation/spring2/constraints.js.map +0 -1
  228. package/dist/animation/spring2/controller.js +0 -434
  229. package/dist/animation/spring2/controller.js.map +0 -1
  230. package/dist/animation/spring2/math.js +0 -16
  231. package/dist/animation/spring2/math.js.map +0 -1
  232. package/dist/animation/spring2/solver.js +0 -624
  233. package/dist/animation/spring2/solver.js.map +0 -1
  234. package/dist/animation/spring2/spring_system.js +0 -118
  235. package/dist/animation/spring2/spring_system.js.map +0 -1
  236. package/dist/animation/spring2/types.js +0 -19
  237. package/dist/animation/spring2/types.js.map +0 -1
  238. package/dist/animation/spring_postprocessor.js +0 -54
  239. package/dist/animation/spring_postprocessor.js.map +0 -1
  240. package/dist/asset/loaders/gltf/gltf_loader.js +0 -1276
  241. package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
  242. package/dist/asset/loaders/gltf/helpers.js +0 -331
  243. package/dist/asset/loaders/gltf/helpers.js.map +0 -1
  244. package/dist/material/sprite3d.js +0 -301
  245. package/dist/material/sprite3d.js.map +0 -1
  246. package/dist/material/sprite3d_std.js +0 -116
  247. package/dist/material/sprite3d_std.js.map +0 -1
  248. package/dist/material/sprite3dblueprint.js +0 -235
  249. package/dist/material/sprite3dblueprint.js.map +0 -1
  250. package/dist/material/sprite_sdf.js +0 -106
  251. package/dist/material/sprite_sdf.js.map +0 -1
  252. package/dist/material/terrainmaterial.js +0 -368
  253. package/dist/material/terrainmaterial.js.map +0 -1
  254. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  255. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  256. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  257. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  258. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  259. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  260. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  261. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  262. package/dist/render/deferredlightpass.js +0 -510
  263. package/dist/render/deferredlightpass.js.map +0 -1
  264. package/dist/render/deferredshadowlightpass.js +0 -428
  265. package/dist/render/deferredshadowlightpass.js.map +0 -1
  266. package/dist/render/gbufferpass.js +0 -50
  267. package/dist/render/gbufferpass.js.map +0 -1
  268. package/dist/scene/sdftextsprite.js +0 -322
  269. package/dist/scene/sdftextsprite.js.map +0 -1
  270. package/dist/scene/sprite3d.js +0 -18
  271. package/dist/scene/sprite3d.js.map +0 -1
  272. package/dist/scene/terrain/grass.js +0 -280
  273. package/dist/scene/terrain/grass.js.map +0 -1
  274. package/dist/scene/terrain/heightfield.js +0 -475
  275. package/dist/scene/terrain/heightfield.js.map +0 -1
  276. package/dist/scene/terrain/patch.js +0 -532
  277. package/dist/scene/terrain/patch.js.map +0 -1
  278. package/dist/scene/terrain/quadtree.js +0 -461
  279. package/dist/scene/terrain/quadtree.js.map +0 -1
  280. package/dist/scene/terrain/terrain.js +0 -231
  281. package/dist/scene/terrain/terrain.js.map +0 -1
  282. package/dist/src/animation/animation.js +0 -127
  283. package/dist/src/animation/animation.js.map +0 -1
  284. package/dist/src/animation/animationset.js +0 -255
  285. package/dist/src/animation/animationset.js.map +0 -1
  286. package/dist/src/animation/animationtrack.js +0 -34
  287. package/dist/src/animation/animationtrack.js.map +0 -1
  288. package/dist/src/animation/eulerrotationtrack.js +0 -52
  289. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  290. package/dist/src/animation/morphtarget.js +0 -93
  291. package/dist/src/animation/morphtarget.js.map +0 -1
  292. package/dist/src/animation/morphtrack.js +0 -70
  293. package/dist/src/animation/morphtrack.js.map +0 -1
  294. package/dist/src/animation/proptrack.js +0 -161
  295. package/dist/src/animation/proptrack.js.map +0 -1
  296. package/dist/src/animation/rotationtrack.js +0 -51
  297. package/dist/src/animation/rotationtrack.js.map +0 -1
  298. package/dist/src/animation/scaletrack.js +0 -50
  299. package/dist/src/animation/scaletrack.js.map +0 -1
  300. package/dist/src/animation/skeleton.js +0 -204
  301. package/dist/src/animation/skeleton.js.map +0 -1
  302. package/dist/src/animation/translationtrack.js +0 -50
  303. package/dist/src/animation/translationtrack.js.map +0 -1
  304. package/dist/src/app/app.js +0 -129
  305. package/dist/src/app/app.js.map +0 -1
  306. package/dist/src/app/inputmgr.js +0 -267
  307. package/dist/src/app/inputmgr.js.map +0 -1
  308. package/dist/src/asset/assetmanager.js +0 -404
  309. package/dist/src/asset/assetmanager.js.map +0 -1
  310. package/dist/src/asset/builtin.js +0 -337
  311. package/dist/src/asset/builtin.js.map +0 -1
  312. package/dist/src/asset/loaders/dds/dds.js +0 -470
  313. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  314. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  315. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  316. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  317. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  318. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  319. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  320. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  321. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  322. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  323. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  324. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  325. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  326. package/dist/src/asset/loaders/loader.js +0 -45
  327. package/dist/src/asset/loaders/loader.js.map +0 -1
  328. package/dist/src/asset/model.js +0 -414
  329. package/dist/src/asset/model.js.map +0 -1
  330. package/dist/src/blitter/bilateralblur.js +0 -221
  331. package/dist/src/blitter/bilateralblur.js.map +0 -1
  332. package/dist/src/blitter/blitter.js +0 -390
  333. package/dist/src/blitter/blitter.js.map +0 -1
  334. package/dist/src/blitter/box.js +0 -118
  335. package/dist/src/blitter/box.js.map +0 -1
  336. package/dist/src/blitter/copy.js +0 -22
  337. package/dist/src/blitter/copy.js.map +0 -1
  338. package/dist/src/blitter/gaussianblur.js +0 -228
  339. package/dist/src/blitter/gaussianblur.js.map +0 -1
  340. package/dist/src/camera/base.js +0 -92
  341. package/dist/src/camera/base.js.map +0 -1
  342. package/dist/src/camera/camera.js +0 -1005
  343. package/dist/src/camera/camera.js.map +0 -1
  344. package/dist/src/camera/fps.js +0 -238
  345. package/dist/src/camera/fps.js.map +0 -1
  346. package/dist/src/camera/orbit.js +0 -245
  347. package/dist/src/camera/orbit.js.map +0 -1
  348. package/dist/src/camera/orthocamera.js +0 -167
  349. package/dist/src/camera/orthocamera.js.map +0 -1
  350. package/dist/src/camera/perspectivecamera.js +0 -141
  351. package/dist/src/camera/perspectivecamera.js.map +0 -1
  352. package/dist/src/index.js +0 -120
  353. package/dist/src/index.js.map +0 -1
  354. package/dist/src/material/blinn.js +0 -81
  355. package/dist/src/material/blinn.js.map +0 -1
  356. package/dist/src/material/grassmaterial.js +0 -113
  357. package/dist/src/material/grassmaterial.js.map +0 -1
  358. package/dist/src/material/lambert.js +0 -92
  359. package/dist/src/material/lambert.js.map +0 -1
  360. package/dist/src/material/material.js +0 -301
  361. package/dist/src/material/material.js.map +0 -1
  362. package/dist/src/material/meshmaterial.js +0 -704
  363. package/dist/src/material/meshmaterial.js.map +0 -1
  364. package/dist/src/material/mixins/albedocolor.js +0 -76
  365. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  366. package/dist/src/material/mixins/foliage.js +0 -47
  367. package/dist/src/material/mixins/foliage.js.map +0 -1
  368. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  369. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  370. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  371. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  372. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  373. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  374. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  375. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  376. package/dist/src/material/mixins/lit.js +0 -476
  377. package/dist/src/material/mixins/lit.js.map +0 -1
  378. package/dist/src/material/mixins/pbr/common.js +0 -918
  379. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  380. package/dist/src/material/mixins/texture.js +0 -172
  381. package/dist/src/material/mixins/texture.js.map +0 -1
  382. package/dist/src/material/mixins/vertexcolor.js +0 -56
  383. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  384. package/dist/src/material/particle.js +0 -178
  385. package/dist/src/material/particle.js.map +0 -1
  386. package/dist/src/material/pbrmr.js +0 -97
  387. package/dist/src/material/pbrmr.js.map +0 -1
  388. package/dist/src/material/pbrsg.js +0 -97
  389. package/dist/src/material/pbrsg.js.map +0 -1
  390. package/dist/src/material/shader/helper.js +0 -1209
  391. package/dist/src/material/shader/helper.js.map +0 -1
  392. package/dist/src/material/terrain-cm.js +0 -606
  393. package/dist/src/material/terrain-cm.js.map +0 -1
  394. package/dist/src/material/terrainmaterial.js +0 -375
  395. package/dist/src/material/terrainmaterial.js.map +0 -1
  396. package/dist/src/material/unlit.js +0 -41
  397. package/dist/src/material/unlit.js.map +0 -1
  398. package/dist/src/material/water.js +0 -417
  399. package/dist/src/material/water.js.map +0 -1
  400. package/dist/src/posteffect/bloom.js +0 -361
  401. package/dist/src/posteffect/bloom.js.map +0 -1
  402. package/dist/src/posteffect/compositor.js +0 -226
  403. package/dist/src/posteffect/compositor.js.map +0 -1
  404. package/dist/src/posteffect/fxaa.js +0 -273
  405. package/dist/src/posteffect/fxaa.js.map +0 -1
  406. package/dist/src/posteffect/grayscale.js +0 -69
  407. package/dist/src/posteffect/grayscale.js.map +0 -1
  408. package/dist/src/posteffect/motionblur.js +0 -96
  409. package/dist/src/posteffect/motionblur.js.map +0 -1
  410. package/dist/src/posteffect/posteffect.js +0 -126
  411. package/dist/src/posteffect/posteffect.js.map +0 -1
  412. package/dist/src/posteffect/sao.js +0 -324
  413. package/dist/src/posteffect/sao.js.map +0 -1
  414. package/dist/src/posteffect/ssr.js +0 -489
  415. package/dist/src/posteffect/ssr.js.map +0 -1
  416. package/dist/src/posteffect/taa.js +0 -172
  417. package/dist/src/posteffect/taa.js.map +0 -1
  418. package/dist/src/posteffect/tonemap.js +0 -94
  419. package/dist/src/posteffect/tonemap.js.map +0 -1
  420. package/dist/src/render/abuffer_oit.js +0 -361
  421. package/dist/src/render/abuffer_oit.js.map +0 -1
  422. package/dist/src/render/clipmap.js +0 -851
  423. package/dist/src/render/clipmap.js.map +0 -1
  424. package/dist/src/render/cluster_light.js +0 -333
  425. package/dist/src/render/cluster_light.js.map +0 -1
  426. package/dist/src/render/cull_visitor.js +0 -187
  427. package/dist/src/render/cull_visitor.js.map +0 -1
  428. package/dist/src/render/depthpass.js +0 -68
  429. package/dist/src/render/depthpass.js.map +0 -1
  430. package/dist/src/render/drawable_mixin.js +0 -227
  431. package/dist/src/render/drawable_mixin.js.map +0 -1
  432. package/dist/src/render/envlight.js +0 -463
  433. package/dist/src/render/envlight.js.map +0 -1
  434. package/dist/src/render/fbm_wavegenerator.js +0 -251
  435. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  436. package/dist/src/render/fft_wavegenerator.js +0 -1006
  437. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  438. package/dist/src/render/fullscreenquad.js +0 -38
  439. package/dist/src/render/fullscreenquad.js.map +0 -1
  440. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  441. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  442. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  443. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  444. package/dist/src/render/hzb.js +0 -273
  445. package/dist/src/render/hzb.js.map +0 -1
  446. package/dist/src/render/lightpass.js +0 -172
  447. package/dist/src/render/lightpass.js.map +0 -1
  448. package/dist/src/render/objectcolorpass.js +0 -51
  449. package/dist/src/render/objectcolorpass.js.map +0 -1
  450. package/dist/src/render/primitive.js +0 -364
  451. package/dist/src/render/primitive.js.map +0 -1
  452. package/dist/src/render/render_queue.js +0 -467
  453. package/dist/src/render/render_queue.js.map +0 -1
  454. package/dist/src/render/renderbundle_wrapper.js +0 -152
  455. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  456. package/dist/src/render/renderer.js +0 -455
  457. package/dist/src/render/renderer.js.map +0 -1
  458. package/dist/src/render/renderpass.js +0 -200
  459. package/dist/src/render/renderpass.js.map +0 -1
  460. package/dist/src/render/shadowmap_pass.js +0 -56
  461. package/dist/src/render/shadowmap_pass.js.map +0 -1
  462. package/dist/src/render/sky.js +0 -1103
  463. package/dist/src/render/sky.js.map +0 -1
  464. package/dist/src/render/weightedblended_oit.js +0 -168
  465. package/dist/src/render/weightedblended_oit.js.map +0 -1
  466. package/dist/src/scene/batchgroup.js +0 -162
  467. package/dist/src/scene/batchgroup.js.map +0 -1
  468. package/dist/src/scene/environment.js +0 -209
  469. package/dist/src/scene/environment.js.map +0 -1
  470. package/dist/src/scene/graph_node.js +0 -72
  471. package/dist/src/scene/graph_node.js.map +0 -1
  472. package/dist/src/scene/light.js +0 -416
  473. package/dist/src/scene/light.js.map +0 -1
  474. package/dist/src/scene/mesh.js +0 -341
  475. package/dist/src/scene/mesh.js.map +0 -1
  476. package/dist/src/scene/octree.js +0 -649
  477. package/dist/src/scene/octree.js.map +0 -1
  478. package/dist/src/scene/particlesys.js +0 -738
  479. package/dist/src/scene/particlesys.js.map +0 -1
  480. package/dist/src/scene/raycast_visitor.js +0 -103
  481. package/dist/src/scene/raycast_visitor.js.map +0 -1
  482. package/dist/src/scene/scene.js +0 -284
  483. package/dist/src/scene/scene.js.map +0 -1
  484. package/dist/src/scene/scene_node.js +0 -732
  485. package/dist/src/scene/scene_node.js.map +0 -1
  486. package/dist/src/scene/terrain/grass.js +0 -278
  487. package/dist/src/scene/terrain/grass.js.map +0 -1
  488. package/dist/src/scene/terrain/heightfield.js +0 -475
  489. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  490. package/dist/src/scene/terrain/patch.js +0 -530
  491. package/dist/src/scene/terrain/patch.js.map +0 -1
  492. package/dist/src/scene/terrain/quadtree.js +0 -461
  493. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  494. package/dist/src/scene/terrain/terrain.js +0 -246
  495. package/dist/src/scene/terrain/terrain.js.map +0 -1
  496. package/dist/src/scene/terrain-cm/grass.js +0 -594
  497. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  498. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  499. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  500. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  501. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  502. package/dist/src/scene/water.js +0 -374
  503. package/dist/src/scene/water.js.map +0 -1
  504. package/dist/src/shaders/atmosphere.js +0 -957
  505. package/dist/src/shaders/atmosphere.js.map +0 -1
  506. package/dist/src/shaders/fog.js +0 -112
  507. package/dist/src/shaders/fog.js.map +0 -1
  508. package/dist/src/shaders/misc.js +0 -266
  509. package/dist/src/shaders/misc.js.map +0 -1
  510. package/dist/src/shaders/noise.js +0 -222
  511. package/dist/src/shaders/noise.js.map +0 -1
  512. package/dist/src/shaders/pbr.js +0 -51
  513. package/dist/src/shaders/pbr.js.map +0 -1
  514. package/dist/src/shaders/shadow.js +0 -636
  515. package/dist/src/shaders/shadow.js.map +0 -1
  516. package/dist/src/shaders/ssr.js +0 -490
  517. package/dist/src/shaders/ssr.js.map +0 -1
  518. package/dist/src/shaders/temporal.js +0 -215
  519. package/dist/src/shaders/temporal.js.map +0 -1
  520. package/dist/src/shaders/water.js +0 -756
  521. package/dist/src/shaders/water.js.map +0 -1
  522. package/dist/src/shadow/esm.js +0 -237
  523. package/dist/src/shadow/esm.js.map +0 -1
  524. package/dist/src/shadow/pcf_opt.js +0 -181
  525. package/dist/src/shadow/pcf_opt.js.map +0 -1
  526. package/dist/src/shadow/pcf_pd.js +0 -189
  527. package/dist/src/shadow/pcf_pd.js.map +0 -1
  528. package/dist/src/shadow/shader.js +0 -37
  529. package/dist/src/shadow/shader.js.map +0 -1
  530. package/dist/src/shadow/shadow_impl.js +0 -15
  531. package/dist/src/shadow/shadow_impl.js.map +0 -1
  532. package/dist/src/shadow/shadowmapper.js +0 -790
  533. package/dist/src/shadow/shadowmapper.js.map +0 -1
  534. package/dist/src/shadow/ssm.js +0 -159
  535. package/dist/src/shadow/ssm.js.map +0 -1
  536. package/dist/src/shadow/vsm.js +0 -297
  537. package/dist/src/shadow/vsm.js.map +0 -1
  538. package/dist/src/shapes/box.js +0 -386
  539. package/dist/src/shapes/box.js.map +0 -1
  540. package/dist/src/shapes/cylinder.js +0 -125
  541. package/dist/src/shapes/cylinder.js.map +0 -1
  542. package/dist/src/shapes/plane.js +0 -88
  543. package/dist/src/shapes/plane.js.map +0 -1
  544. package/dist/src/shapes/shape.js +0 -87
  545. package/dist/src/shapes/shape.js.map +0 -1
  546. package/dist/src/shapes/sphere.js +0 -114
  547. package/dist/src/shapes/sphere.js.map +0 -1
  548. package/dist/src/shapes/tetrahedron.js +0 -188
  549. package/dist/src/shapes/tetrahedron.js.map +0 -1
  550. package/dist/src/shapes/torus.js +0 -111
  551. package/dist/src/shapes/torus.js.map +0 -1
  552. package/dist/src/utility/aabbtree.js +0 -400
  553. package/dist/src/utility/aabbtree.js.map +0 -1
  554. package/dist/src/utility/bounding_volume.js +0 -29
  555. package/dist/src/utility/bounding_volume.js.map +0 -1
  556. package/dist/src/utility/debug.js +0 -28
  557. package/dist/src/utility/debug.js.map +0 -1
  558. package/dist/src/utility/draco/decoder.js +0 -116
  559. package/dist/src/utility/draco/decoder.js.map +0 -1
  560. package/dist/src/utility/misc.js +0 -105
  561. package/dist/src/utility/misc.js.map +0 -1
  562. package/dist/src/utility/panorama.js +0 -163
  563. package/dist/src/utility/panorama.js.map +0 -1
  564. package/dist/src/utility/pmrem.js +0 -354
  565. package/dist/src/utility/pmrem.js.map +0 -1
  566. package/dist/src/utility/rendermipmap.js +0 -115
  567. package/dist/src/utility/rendermipmap.js.map +0 -1
  568. package/dist/src/utility/serialization/json.js +0 -402
  569. package/dist/src/utility/serialization/json.js.map +0 -1
  570. package/dist/src/utility/serialization/manager.js +0 -623
  571. package/dist/src/utility/serialization/manager.js.map +0 -1
  572. package/dist/src/utility/serialization/scene/animation.js +0 -248
  573. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  574. package/dist/src/utility/serialization/scene/batch.js +0 -59
  575. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  576. package/dist/src/utility/serialization/scene/camera.js +0 -790
  577. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  578. package/dist/src/utility/serialization/scene/common.js +0 -222
  579. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  580. package/dist/src/utility/serialization/scene/light.js +0 -575
  581. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  582. package/dist/src/utility/serialization/scene/material.js +0 -1111
  583. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  584. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  585. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  586. package/dist/src/utility/serialization/scene/misc.js +0 -39
  587. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  588. package/dist/src/utility/serialization/scene/node.js +0 -451
  589. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  590. package/dist/src/utility/serialization/scene/particle.js +0 -425
  591. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  592. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  593. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  594. package/dist/src/utility/serialization/scene/scene.js +0 -704
  595. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  596. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  597. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  598. package/dist/src/utility/serialization/scene/water.js +0 -465
  599. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  600. package/dist/src/utility/shprojector.js +0 -297
  601. package/dist/src/utility/shprojector.js.map +0 -1
  602. package/dist/src/utility/textures/ggxlut.js +0 -213
  603. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  604. package/dist/src/utility/textures/gradientnoise.js +0 -62
  605. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  606. package/dist/src/utility/textures/randomnoise.js +0 -41
  607. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  608. package/dist/src/values.js +0 -162
  609. package/dist/src/values.js.map +0 -1
  610. package/dist/utility/blueprint/material/common.js +0 -7
  611. package/dist/utility/blueprint/material/common.js.map +0 -1
  612. package/dist/utility/serialization/blueprint/constants.js +0 -255
  613. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  614. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  615. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  616. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  617. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
  618. package/dist/utility/serialization/scene/cloth_script.js +0 -834
  619. package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
  620. package/dist/utility/serialization/scene/spring_script.js +0 -596
  621. package/dist/utility/serialization/scene/spring_script.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sources":["../../../src/utility/serialization/manager.ts"],"sourcesContent":["import type { Nullable, RequireOptionals } from '@zephyr3d/base';\r\nimport { ASSERT, DRef, randomUUID, type GenericConstructor, type TypedArray, type VFS } from '@zephyr3d/base';\r\nimport type { PropertyAccessor, PropertyType, PropertyValue, SerializableClass } from './types';\r\nimport { getAABBClass } from './scene/misc';\r\nimport { getGraphNodeClass, getSceneNodeClass } from './scene/node';\r\nimport { getBatchGroupClass } from './scene/batch';\r\nimport { getCameraClass, getPerspectiveCameraClass, getOrthoCameraClass } from './scene/camera';\r\nimport {\r\n getPunctualLightClass,\r\n getDirectionalLightClass,\r\n getSpotLightClass,\r\n getRectLightClass,\r\n getPointLightClass\r\n} from './scene/light';\r\nimport {\r\n getMeshMaterialClass,\r\n getUnlitMaterialClass,\r\n getLambertMaterialClass,\r\n getBlinnMaterialClass,\r\n getPBRMetallicRoughnessMaterialClass,\r\n getPBRSpecularGlossinessMaterialClass,\r\n getParticleMaterialClass,\r\n getPBRBluePrintMaterialClass,\r\n getSpriteMaterialClass,\r\n getSpriteBlueprintMaterialClass,\r\n getStandardSpriteMaterialClass\r\n} from './scene/material';\r\nimport { getMeshClass } from './scene/mesh';\r\nimport { getParticleNodeClass } from './scene/particle';\r\nimport {\r\n getBoxShapeClass,\r\n getBoxFrameShapeClass,\r\n getSphereShapeClass,\r\n getTorusShapeClass,\r\n getCylinderShapeClass,\r\n getPlaneShapeClass,\r\n getTetrahedronShapeClass,\r\n getCapsuleShapeClass\r\n} from './scene/primitive';\r\nimport { getSceneClass } from './scene/scene';\r\nimport { getScriptAttachmentClass } from './scene/script';\r\nimport { getTerrainClass } from './scene/terrain';\r\nimport { getWaterClass, getFFTWaveGeneratorClass, getFBMWaveGeneratorClass } from './scene/water';\r\nimport {\r\n getAnimationClass,\r\n getFixedGeometryCacheTrackClass,\r\n getInterpolatorClass,\r\n getJointDynamicsModifierClass,\r\n getMorphTrackClass,\r\n getPCAGeometryCacheTrackClass,\r\n getNodeEulerRotationTrackClass,\r\n getNodeRotationTrackClass,\r\n getNodeScaleTrackClass,\r\n getNodeTranslationTrackClass,\r\n getPropTrackClass,\r\n getSkeletonClass,\r\n getSkeletonRigClass,\r\n getSkinBindingClass\r\n} from './scene/animation';\r\nimport type { Scene } from '../../scene';\r\nimport { SceneNode } from '../../scene';\r\nimport type { PropertyTrack } from '../../animation';\r\nimport type {\r\n BaseFetchOptions,\r\n FontAssetFetchOptions,\r\n ModelFetchOptions,\r\n ModelLoader,\r\n TextureFetchOptions\r\n} from '../../asset';\r\nimport type { FontAsset } from '../../text';\r\nimport { AssetManager } from '../../asset';\r\nimport type { BaseTexture, SamplerOptions, Texture2D, Texture2DArray, TextureCube } from '@zephyr3d/device';\r\nimport {\r\n getJSONBoolClass,\r\n getJSONObjectClass,\r\n getJSONNumberClass,\r\n getJSONPropClass,\r\n getJSONStringClass,\r\n getJSONArrayClass\r\n} from './json';\r\nimport {\r\n ConstantBooleanNode,\r\n ConstantBVec2Node,\r\n ConstantBVec3Node,\r\n ConstantBVec4Node,\r\n ConstantScalarNode,\r\n ConstantVec2Node,\r\n ConstantVec3Node,\r\n ConstantVec4Node\r\n} from '../blueprint/common/constants';\r\nimport {\r\n ConstantTexture2DArrayNode,\r\n ConstantTexture2DNode,\r\n ConstantTextureCubeNode,\r\n PannerNode,\r\n TextureSampleNode\r\n} from '../blueprint/material/texture';\r\nimport {\r\n AbsNode,\r\n ArccosineHNode,\r\n ArcCosNode,\r\n ArcsineHNode,\r\n ArcSinNode,\r\n ArcTan2Node,\r\n ArctangentHNode,\r\n ArcTanNode,\r\n CeilNode,\r\n ClampNode,\r\n CompAddNode,\r\n CompDivNode,\r\n CompMulNode,\r\n CompSubNode,\r\n CosHNode,\r\n CosNode,\r\n CrossProductNode,\r\n DDXNode,\r\n DDYNode,\r\n Degrees2RadiansNode,\r\n DistanceNode,\r\n DotProductNode,\r\n Exp2Node,\r\n ExpNode,\r\n FaceForwardNode,\r\n FloorNode,\r\n FmaNode,\r\n FractNode,\r\n FWidthNode,\r\n PerlinNoise2DNode,\r\n InvSqrtNode,\r\n LengthNode,\r\n Log2Node,\r\n LogNode,\r\n MakeVectorNode,\r\n MaxNode,\r\n MinNode,\r\n MixNode,\r\n ModNode,\r\n NormalizeNode,\r\n PowNode,\r\n Radians2DegreesNode,\r\n ReflectNode,\r\n RefractNode,\r\n SaturateNode,\r\n SignNode,\r\n SimplexNoise2DNode,\r\n SinHNode,\r\n SinNode,\r\n SqrtNode,\r\n StepNode,\r\n TanHNode,\r\n TanNode,\r\n TransformNode,\r\n Hash1Node,\r\n Hash2Node,\r\n Hash3Node,\r\n SwizzleNode,\r\n CompComparisonNode,\r\n AnyConditionNode,\r\n AllConditionNode,\r\n SelectionNode,\r\n EqualNode,\r\n NotEqualNode,\r\n LogicallyAndNode,\r\n LogicallyOrNode,\r\n SmoothStepNode,\r\n RotateAboutAxisNode\r\n} from '../blueprint/common/math';\r\nimport {\r\n BillboardMatrixNode,\r\n CameraNearFarNode,\r\n CameraPositionNode,\r\n CameraVectorNode,\r\n ElapsedTimeNode,\r\n InstanceIndexNode,\r\n InvProjMatrixNode,\r\n InvViewProjMatrixNode,\r\n PixelNormalNode,\r\n PixelWorldPositionNode,\r\n ProjectionMatrixNode,\r\n ResolveVertexNormalNode,\r\n ResolveVertexPositionNode,\r\n ResolveVertexTangentNode,\r\n SkyEnvTextureNode,\r\n VertexBinormalNode,\r\n VertexColorNode,\r\n VertexIndexNode,\r\n VertexNormalNode,\r\n VertexOutputNode,\r\n VertexPositionNode,\r\n VertexTangentNode,\r\n VertexUVNode,\r\n ViewMatrixNode,\r\n ViewProjMatrixNode\r\n} from '../blueprint/material/inputs';\r\nimport { PBRBlockNode, SpriteBlockNode, VertexBlockNode } from '../blueprint/material/pbr';\r\nimport type { BlueprintDAG, GraphStructure, IGraphNode, NodeConnection } from '../blueprint/node';\r\nimport type { Material, MeshMaterial, PBRBluePrintMaterial } from '../../material';\r\nimport type { Primitive } from '../../render';\r\nimport { FunctionCallNode, FunctionInputNode, FunctionOutputNode } from '../blueprint/material/func';\r\nimport { getSpriteClass } from './scene/sprite';\r\nimport { getMSDFTextSpriteClass, getTextSpriteClass, getMSDFTextClass } from './scene/text';\r\n\r\nconst defaultValues: Record<PropertyType, any> = {\r\n bool: false,\r\n float: 0,\r\n int: 0,\r\n int2: [0, 0],\r\n int3: [0, 0, 0],\r\n int4: [0, 0, 0, 0],\r\n object: null,\r\n object_array: [],\r\n embedded: '',\r\n rgb: [0, 0, 0],\r\n rgba: [0, 0, 0, 0],\r\n string: '',\r\n vec2: [0, 0],\r\n vec3: [0, 0, 0],\r\n vec4: [0, 0, 0, 0],\r\n command: null\r\n};\r\n\r\n/**\r\n * Manages serialization and deserialization of engine objects to/from JSON,\r\n * including asset resolution via a virtual file system (VFS) and asset manager.\r\n *\r\n * @remarks\r\n * - Keeps a registry of serializable classes and their properties.\r\n * - Converts object graphs to JSON using per-class metadata and property accessors.\r\n * - Supports async asset embedding/export and lazy deserialization via phases.\r\n * - Maps loaded assets/objects back to their source IDs for caching and deduplication.\r\n *\r\n * Typical workflow:\r\n * 1. Construct with a `VFS`.\r\n * 2. Optionally `registerClass` for custom types.\r\n * 3. Use `serializeObject` and `deserializeObject` to convert between runtime objects and JSON.\r\n * 4. Use `saveScene` / `loadScene` for scene I/O.\r\n *\r\n * Caching:\r\n * - `getAssetId` returns the known source ID for an allocated asset when available.\r\n *\r\n * Threading:\r\n * - Methods returning Promises perform async I/O using the provided `VFS`/AssetManager.\r\n *\r\n * @public\r\n */\r\nexport class ResourceManager {\r\n private readonly _classMap: Map<GenericConstructor, SerializableClass>;\r\n private _vfs: VFS;\r\n private _propMap: Record<string, PropertyAccessor>;\r\n private readonly _propNameMap: Map<PropertyAccessor, string>;\r\n private readonly _clsPropMap: Map<SerializableClass, PropertyAccessor[]>;\r\n private readonly _assetManager: AssetManager;\r\n private readonly _editorMode: boolean;\r\n private _allocated: WeakMap<any, string>;\r\n /**\r\n * Create a ResourceManager bound to a virtual file system.\r\n *\r\n * @param vfs - Virtual file system used for reading/writing assets and scenes.\r\n */\r\n constructor(vfs: VFS, editorMode = false) {\r\n this._vfs = vfs;\r\n this._editorMode = editorMode;\r\n this._allocated = new WeakMap();\r\n this._assetManager = new AssetManager(this);\r\n this._propMap = {};\r\n this._propNameMap = new Map();\r\n this._clsPropMap = new Map();\r\n this._classMap = new Map<GenericConstructor, SerializableClass>(\r\n [\r\n getJSONPropClass(),\r\n getJSONNumberClass(),\r\n getJSONStringClass(),\r\n getJSONBoolClass(),\r\n getJSONObjectClass(),\r\n getJSONArrayClass(),\r\n getScriptAttachmentClass(),\r\n getAABBClass(),\r\n getInterpolatorClass(),\r\n getSkeletonRigClass(),\r\n getSkinBindingClass(),\r\n getSkeletonClass(),\r\n getJointDynamicsModifierClass(),\r\n getAnimationClass(this),\r\n getPropTrackClass(this),\r\n getNodeRotationTrackClass(),\r\n getNodeScaleTrackClass(),\r\n getNodeTranslationTrackClass(),\r\n getNodeEulerRotationTrackClass(),\r\n getFixedGeometryCacheTrackClass(),\r\n getPCAGeometryCacheTrackClass(),\r\n getMorphTrackClass(),\r\n getSceneNodeClass(this),\r\n getGraphNodeClass(),\r\n getMeshClass(),\r\n getSpriteClass(),\r\n getTextSpriteClass(),\r\n getMSDFTextSpriteClass(),\r\n getMSDFTextClass(),\r\n getWaterClass(this),\r\n getTerrainClass(this),\r\n getFFTWaveGeneratorClass(),\r\n getFBMWaveGeneratorClass(),\r\n getParticleNodeClass(),\r\n getPunctualLightClass(),\r\n getDirectionalLightClass(),\r\n getSpotLightClass(),\r\n getRectLightClass(),\r\n getPointLightClass(),\r\n getCameraClass(),\r\n getPerspectiveCameraClass(),\r\n getOrthoCameraClass(),\r\n getBatchGroupClass(),\r\n getSceneClass(this),\r\n ...getMeshMaterialClass(),\r\n ...getPBRBluePrintMaterialClass(),\r\n ...getSpriteBlueprintMaterialClass(),\r\n ...getUnlitMaterialClass(this),\r\n ...getLambertMaterialClass(this),\r\n ...getBlinnMaterialClass(this),\r\n ...getPBRMetallicRoughnessMaterialClass(this),\r\n ...getPBRSpecularGlossinessMaterialClass(this),\r\n ...getParticleMaterialClass(this),\r\n ...getSpriteMaterialClass(this),\r\n ...getStandardSpriteMaterialClass(this),\r\n getBoxShapeClass(),\r\n getBoxFrameShapeClass(),\r\n getSphereShapeClass(),\r\n getTorusShapeClass(),\r\n getCylinderShapeClass(),\r\n getPlaneShapeClass(),\r\n getTetrahedronShapeClass(),\r\n getCapsuleShapeClass(),\r\n ConstantScalarNode.getSerializationCls(),\r\n ConstantVec2Node.getSerializationCls(),\r\n ConstantVec3Node.getSerializationCls(),\r\n ConstantVec4Node.getSerializationCls(),\r\n ConstantBooleanNode.getSerializationCls(),\r\n ConstantBVec2Node.getSerializationCls(),\r\n ConstantBVec3Node.getSerializationCls(),\r\n ConstantBVec4Node.getSerializationCls(),\r\n ConstantTexture2DNode.getSerializationCls(),\r\n ConstantTexture2DArrayNode.getSerializationCls(),\r\n ConstantTextureCubeNode.getSerializationCls(),\r\n MakeVectorNode.getSerializationCls(),\r\n SwizzleNode.getSerializationCls(),\r\n EqualNode.getSerializationCls(),\r\n NotEqualNode.getSerializationCls(),\r\n LogicallyAndNode.getSerializationCls(),\r\n LogicallyOrNode.getSerializationCls(),\r\n CompComparisonNode.getSerializationCls(),\r\n AnyConditionNode.getSerializationCls(),\r\n AllConditionNode.getSerializationCls(),\r\n SelectionNode.getSerializationCls(),\r\n Degrees2RadiansNode.getSerializationCls(),\r\n Radians2DegreesNode.getSerializationCls(),\r\n SinNode.getSerializationCls(),\r\n CosNode.getSerializationCls(),\r\n TanNode.getSerializationCls(),\r\n ArcSinNode.getSerializationCls(),\r\n ArcCosNode.getSerializationCls(),\r\n ArcTanNode.getSerializationCls(),\r\n ArcTan2Node.getSerializationCls(),\r\n SinHNode.getSerializationCls(),\r\n CosHNode.getSerializationCls(),\r\n TanHNode.getSerializationCls(),\r\n ArcsineHNode.getSerializationCls(),\r\n ArccosineHNode.getSerializationCls(),\r\n ArctangentHNode.getSerializationCls(),\r\n ExpNode.getSerializationCls(),\r\n Exp2Node.getSerializationCls(),\r\n LogNode.getSerializationCls(),\r\n Log2Node.getSerializationCls(),\r\n SqrtNode.getSerializationCls(),\r\n InvSqrtNode.getSerializationCls(),\r\n AbsNode.getSerializationCls(),\r\n SignNode.getSerializationCls(),\r\n FloorNode.getSerializationCls(),\r\n CeilNode.getSerializationCls(),\r\n FractNode.getSerializationCls(),\r\n DDXNode.getSerializationCls(),\r\n DDYNode.getSerializationCls(),\r\n FWidthNode.getSerializationCls(),\r\n CompAddNode.getSerializationCls(),\r\n CompSubNode.getSerializationCls(),\r\n CompMulNode.getSerializationCls(),\r\n CompDivNode.getSerializationCls(),\r\n ModNode.getSerializationCls(),\r\n MinNode.getSerializationCls(),\r\n MaxNode.getSerializationCls(),\r\n PowNode.getSerializationCls(),\r\n StepNode.getSerializationCls(),\r\n SmoothStepNode.getSerializationCls(),\r\n FmaNode.getSerializationCls(),\r\n ClampNode.getSerializationCls(),\r\n SaturateNode.getSerializationCls(),\r\n MixNode.getSerializationCls(),\r\n NormalizeNode.getSerializationCls(),\r\n TransformNode.getSerializationCls(),\r\n RotateAboutAxisNode.getSerializationCls(),\r\n FaceForwardNode.getSerializationCls(),\r\n ReflectNode.getSerializationCls(),\r\n RefractNode.getSerializationCls(),\r\n LengthNode.getSerializationCls(),\r\n DistanceNode.getSerializationCls(),\r\n DotProductNode.getSerializationCls(),\r\n CrossProductNode.getSerializationCls(),\r\n Hash1Node.getSerializationCls(),\r\n Hash2Node.getSerializationCls(),\r\n Hash3Node.getSerializationCls(),\r\n SimplexNoise2DNode.getSerializationCls(),\r\n PerlinNoise2DNode.getSerializationCls(),\r\n VertexOutputNode.getSerializationCls(),\r\n VertexIndexNode.getSerializationCls(),\r\n InstanceIndexNode.getSerializationCls(),\r\n VertexColorNode.getSerializationCls(),\r\n VertexUVNode.getSerializationCls(),\r\n VertexPositionNode.getSerializationCls(),\r\n PixelWorldPositionNode.getSerializationCls(),\r\n VertexNormalNode.getSerializationCls(),\r\n PixelNormalNode.getSerializationCls(),\r\n VertexTangentNode.getSerializationCls(),\r\n VertexBinormalNode.getSerializationCls(),\r\n ViewMatrixNode.getSerializationCls(),\r\n ProjectionMatrixNode.getSerializationCls(),\r\n ViewProjMatrixNode.getSerializationCls(),\r\n InvProjMatrixNode.getSerializationCls(),\r\n InvViewProjMatrixNode.getSerializationCls(),\r\n BillboardMatrixNode.getSerializationCls(),\r\n CameraPositionNode.getSerializationCls(),\r\n CameraVectorNode.getSerializationCls(),\r\n CameraNearFarNode.getSerializationCls(),\r\n SkyEnvTextureNode.getSerializationCls(),\r\n ElapsedTimeNode.getSerializationCls(),\r\n PBRBlockNode.getSerializationCls(),\r\n SpriteBlockNode.getSerializationCls(),\r\n VertexBlockNode.getSerializationCls(),\r\n ResolveVertexPositionNode.getSerializationCls(),\r\n ResolveVertexTangentNode.getSerializationCls(),\r\n ResolveVertexNormalNode.getSerializationCls(),\r\n FunctionInputNode.getSerializationCls(),\r\n FunctionOutputNode.getSerializationCls(),\r\n FunctionCallNode.getSerializationCls(this),\r\n PannerNode.getSerializationCls(),\r\n TextureSampleNode.getSerializationCls()\r\n ].map((val) => [val.ctor, val])\r\n );\r\n for (const k of this._classMap) {\r\n this.registerProps(k[1]);\r\n }\r\n }\r\n /**\r\n * The virtual file system used by this manager.\r\n *\r\n * @remarks\r\n * Used by asset fetchers and scene save/load operations.\r\n */\r\n get VFS() {\r\n return this._vfs;\r\n }\r\n set VFS(vfs: VFS) {\r\n this._vfs = vfs;\r\n }\r\n /**\r\n * Wethether editor mode is enabled\r\n *\r\n * @remarks\r\n * In editor mode, some properties will be disabled\r\n */\r\n get editorMode() {\r\n return this._editorMode;\r\n }\r\n /**\r\n * AssetManager\r\n */\r\n get assetManager() {\r\n return this._assetManager;\r\n }\r\n /**\r\n * Get the list of all registered serializable classes.\r\n *\r\n * @remarks\r\n * Includes built-in classes registered during construction and any custom classes\r\n * registered via `registerClass`.\r\n *\r\n * @returns An array of `SerializableClass` metadata.\r\n */\r\n getClasses(): SerializableClass[] {\r\n return [...this._classMap.values()];\r\n }\r\n /**\r\n * Get serialization metadata by a constructor function.\r\n *\r\n * @param ctor - The class constructor to look up.\r\n *\r\n * @returns The `SerializableClass` metadata, or `null` if not found.\r\n */\r\n getClassByConstructor(ctor: GenericConstructor) {\r\n let current: any = ctor;\r\n while (typeof current === 'function' && current !== Function.prototype) {\r\n const cls = this._classMap.get(current);\r\n if (cls) {\r\n return cls;\r\n }\r\n current = Object.getPrototypeOf(current);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Get serialization metadata by an object instance.\r\n *\r\n * @param obj - The object whose constructor will be used for the lookup.\r\n *\r\n * @returns The `SerializableClass` metadata, or `null` if not found.\r\n */\r\n getClassByObject(obj: object) {\r\n return this.getClassByConstructor(obj.constructor as GenericConstructor);\r\n }\r\n /**\r\n * Get serialization metadata by class name.\r\n *\r\n * @param className - Fully qualified class name as stored in JSON.\r\n *\r\n * @returns The `SerializableClass` metadata, or `null` if not found.\r\n */\r\n getClassByName(className: string) {\r\n for (const val of this._classMap) {\r\n if (val[0].name === className) {\r\n return val[1];\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Find the class that owns a given property accessor.\r\n *\r\n * @param prop - Property accessor to search for.\r\n *\r\n * @returns The `SerializableClass` that declares the property, or `null` if unknown.\r\n */\r\n getClassByProperty(prop: PropertyAccessor): Nullable<SerializableClass> {\r\n for (const k of this._clsPropMap) {\r\n if (k[1].indexOf(prop) >= 0) {\r\n return k[0];\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Get the properties declared on a given class.\r\n *\r\n * @param cls - Serializable class metadata.\r\n *\r\n * @returns An array of `PropertyAccessor` entries, or `null` if none.\r\n */\r\n getPropertiesByClass(cls: SerializableClass) {\r\n return this._clsPropMap.get(cls) ?? null;\r\n }\r\n /**\r\n * Get all properties declared on a given class and its ancestors.\r\n *\r\n * @param cls - Serializable class metadata.\r\n *\r\n * @returns An array of `PropertyAccessor` entries, or `null` if none.\r\n */\r\n getAllPropertiesByClass(cls: Nullable<SerializableClass>) {\r\n const props: Map<string, PropertyAccessor> = new Map();\r\n while (cls) {\r\n const classProps = this.getPropertiesByClass(cls);\r\n if (classProps) {\r\n for (const prop of classProps) {\r\n if (!props.has(prop.name)) {\r\n props.set(prop.name, prop);\r\n }\r\n }\r\n }\r\n cls = this.getClassByConstructor(cls.parent!);\r\n }\r\n return [...props.values()];\r\n }\r\n /**\r\n * Get a property accessor by class and property name.\r\n *\r\n * @param cls - Serializable class metadata.\r\n * @param name - Property name to search for.\r\n *\r\n * @returns The `PropertyAccessor`, or `null` if not found.\r\n */\r\n getPropertyByClass(cls: SerializableClass, name: string) {\r\n return this.getPropertiesByClass(cls)?.find((value) => value.name === name) ?? null;\r\n }\r\n /**\r\n * Get a property accessor by its canonical path.\r\n *\r\n * @remarks\r\n * The canonical path format is `/ClassName/propName`.\r\n *\r\n * @param name - Canonical property path.\r\n *\r\n * @returns The `PropertyAccessor`, or `null` if not found.\r\n */\r\n getPropertyByName(name: string) {\r\n return this._propMap[name] ?? null;\r\n }\r\n /**\r\n * Get the canonical path for a property accessor.\r\n *\r\n * @remarks\r\n * Returns a string like `/ClassName/propName` if the property is registered.\r\n *\r\n * @param prop - Property accessor.\r\n *\r\n * @returns The canonical path, or `null` if unknown.\r\n */\r\n getPropertyName(prop: PropertyAccessor) {\r\n return this._propNameMap.get(prop) ?? null;\r\n }\r\n /**\r\n * Register a serializable class and its properties.\r\n *\r\n * @remarks\r\n * - No effect if the class is already registered.\r\n * - Also registers the class's properties with canonical paths.\r\n *\r\n * @param cls - Serializable class metadata to register.\r\n */\r\n registerClass(cls: SerializableClass) {\r\n if (!this._classMap.has(cls.ctor)) {\r\n this._classMap.set(cls.ctor, cls);\r\n this.registerProps(cls);\r\n }\r\n }\r\n /**\r\n * Get the known asset ID previously associated with a loaded/allocated asset.\r\n *\r\n * @remarks\r\n * Returns `null` if the asset was not loaded or tracked by this manager.\r\n *\r\n * @param asset - Asset instance (e.g., texture, model group) to look up.\r\n *\r\n * @returns The asset ID string, or `null` if unknown.\r\n */\r\n getAssetId(asset: unknown) {\r\n return this._allocated.get(asset) ?? null;\r\n }\r\n /**\r\n * Associate an asset ID to a loaded/allocated asset.\r\n *\r\n * @param asset - Asset instance (e.g., texture, model group) to set Id.\r\n * @param id - Asset ID to associated to this asset.\r\n *\r\n */\r\n setAssetId(asset: unknown, id?: Nullable<string>) {\r\n if (asset) {\r\n if (id) {\r\n this._allocated.set(asset, id);\r\n } else {\r\n this._allocated.delete(asset);\r\n }\r\n }\r\n }\r\n /**\r\n * Register a model loader.\r\n *\r\n * @param mimeType - What MIME type of files this loader can load\r\n * @param loader - A concrete model loader implementation.\r\n */\r\n setModelLoader(mimeType: string, loader: ModelLoader) {\r\n this._assetManager.setModelLoader(mimeType, loader);\r\n }\r\n /**\r\n * Fetch a binary asset by ID via the asset manager.\r\n *\r\n * @remarks\r\n * - Associates the returned data with the given ID for future reverse lookup.\r\n * - The ID is typically a VFS path or locator.\r\n *\r\n * @param path - VFS path of the binary asset.\r\n *\r\n * @returns A Promise that resolves to the binary content, or `null` if not found.\r\n */\r\n async fetchBinary(path: string, options?: BaseFetchOptions) {\r\n const id = this.VFS.normalizePath(path);\r\n const data = await this._assetManager.fetchBinaryData(id, null, null, options);\r\n if (data) {\r\n this._allocated.set(data, id);\r\n }\r\n return data;\r\n }\r\n /**\r\n * Fetch a text asset by ID via the asset manager.\r\n *\r\n * @param path - VFS path of TTF/OTF file.\r\n * @returns A Promise that resolves to the font asset, or `null` if not found.\r\n */\r\n async fetchFontAsset(path: string, options?: FontAssetFetchOptions) {\r\n const id = this.VFS.normalizePath(path);\r\n const fontAsset = await this._assetManager.fetchFontAsset(id, options);\r\n if (fontAsset) {\r\n this._allocated.set(fontAsset, id);\r\n }\r\n return fontAsset;\r\n }\r\n /**\r\n * Get a cached font asset by ID if already loaded.\r\n *\r\n * @param path - VFS path of TTF/OTF file.\r\n * @returns The cached FontAsset if it exists and is loaded, or null if not cached or still loading.\r\n */\r\n getFontAsset(path: string) {\r\n return this._assetManager.getFontAsset(this.VFS.normalizePath(path));\r\n }\r\n /**\r\n * Removes a cached font asset entry by asset instance or asset ID.\r\n *\r\n * @param asset - Loaded font asset instance or its asset ID/path.\r\n * @returns `true` if a cache entry existed and was removed.\r\n */\r\n releaseFontAsset(asset: FontAsset | string) {\r\n const path = typeof asset === 'string' ? asset : this.getAssetId(asset);\r\n return path ? this._assetManager.releaseFontAsset(this.VFS.normalizePath(path)) : false;\r\n }\r\n /**\r\n * Serialize an object to a JSON structure using registered class metadata.\r\n *\r\n * @remarks\r\n * - Throws if the object's class is not registered.\r\n * - Populates `asyncTasks` with pending I/O tasks for embedded resources.\r\n *\r\n * @param obj - The object to serialize.\r\n * @param json - Optional existing JSON object to fill.\r\n * @param asyncTasks - Optional list to collect async tasks for embedded asset export.\r\n *\r\n * @returns The serialized JSON structure.\r\n */\r\n async serializeObject(obj: any, json?: any, asyncTasks?: Nullable<Promise<unknown>[]>) {\r\n if (obj === null || obj === undefined) {\r\n return obj;\r\n }\r\n const cls = this.getClasses();\r\n const index = cls.findIndex((val) => val.ctor === obj.constructor);\r\n if (index < 0) {\r\n throw new Error('Serialize object failed: Cannot found serialization meta data');\r\n }\r\n let info = cls[index];\r\n const flags = { saveProps: true };\r\n const initParams = await info?.getInitParams?.(obj, flags);\r\n json = json ?? {};\r\n json.ClassName = info.name;\r\n json.Object = {};\r\n if (initParams !== undefined && initParams !== null) {\r\n json.Init = initParams;\r\n }\r\n if (flags.saveProps) {\r\n await this.serializeObjectProps(obj, json.Object, asyncTasks, info);\r\n }\r\n return json;\r\n }\r\n /**\r\n * Serialize object properties into a JSON structure.\r\n *\r\n * @param obj - The target object to serialize.\r\n * @param json - The JSON structure to populate.\r\n * @param asyncTasks - Optional list to collect async tasks for embedded asset export.\r\n * @param info - Optional serialization metadata for the object's class.\r\n * @returns A Promise that resolves when serialization is complete.\r\n */\r\n async serializeObjectProps(\r\n obj: any,\r\n json?: any,\r\n asyncTasks?: Nullable<Promise<unknown>[]>,\r\n info?: SerializableClass\r\n ) {\r\n if (!info) {\r\n const cls = this.getClasses();\r\n const index = cls.findIndex((val) => val.ctor === obj.constructor);\r\n if (index < 0) {\r\n throw new Error('Serialize object properties failed: Cannot found serialization meta data');\r\n }\r\n info = cls[index];\r\n }\r\n json = json ?? {};\r\n while (info) {\r\n await this.serializeObjectPropsForCls(obj, info, json, asyncTasks);\r\n info = this.getClassByConstructor(info.parent!)!;\r\n }\r\n return json;\r\n }\r\n /**\r\n * Deserialize a JSON structure into an object instance.\r\n *\r\n * @remarks\r\n * - Uses the `ClassName` field to locate the registered class.\r\n * - Supports custom `createFunc` and phased property loading.\r\n *\r\n * @param ctx - Context object passed to custom constructors/resolvers.\r\n * @param json - The serialized JSON structure.\r\n *\r\n * @returns A Promise resolving to the reconstructed object instance, or `null` on failure.\r\n */\r\n async deserializeObject<T extends object>(ctx: any, json: Record<string, unknown>): Promise<Nullable<T>> {\r\n const cls = this.getClasses();\r\n const className = json['ClassName'];\r\n const index = cls.findIndex((val) => val.name === className);\r\n if (index < 0) {\r\n throw new Error(\r\n `Deserialize object failed: Cannot found serialization meta data for class \"${String(className)}\"`\r\n );\r\n }\r\n let info = cls[index];\r\n const initParams = json['Init'] as { asset?: string };\r\n json = json['Object'] as Record<string, unknown>;\r\n let p: T | Promise<T>;\r\n let loadProps = true;\r\n if (info.createFunc) {\r\n let result = info.createFunc(ctx, initParams);\r\n if (result instanceof Promise) {\r\n result = await result;\r\n }\r\n p = result.obj;\r\n loadProps = result.loadProps ?? true;\r\n } else {\r\n p = new info.ctor() as T;\r\n }\r\n //const p: T | Promise<T> = info.createFunc ? info.createFunc(ctx, initParams) : new info.ctor();\r\n if (!p) {\r\n return null;\r\n }\r\n const obj = p instanceof Promise ? await p : p;\r\n if (loadProps) {\r\n await this.deserializeObjectProps(obj, json, info);\r\n }\r\n return obj;\r\n }\r\n /**\r\n * Deserialize object properties from JSON into an existing object instance.\r\n *\r\n * @param obj - The target object to populate.\r\n * @param json - The JSON structure containing serialized properties.\r\n * @param info - Optional serialization metadata for the object's class.\r\n */\r\n async deserializeObjectProps(obj: any, json: any, info?: SerializableClass) {\r\n if (!info) {\r\n const cls = this.getClasses();\r\n const index = cls.findIndex((val) => val.ctor === obj.constructor);\r\n if (index < 0) {\r\n throw new Error('Deserialize object properties failed: Cannot found serialization meta data');\r\n }\r\n info = cls[index];\r\n }\r\n while (info) {\r\n await this.deserializeObjectPropsForCls(obj, info, json);\r\n info = this.getClassByConstructor(info!.parent!)!;\r\n }\r\n }\r\n /**\r\n * Load a model by ID and track the allocation for reverse lookup.\r\n *\r\n * @param path - VFS path of the model file.\r\n * @param scene - Scene into which the model is loaded.\r\n * @param options - Optional model fetch options.\r\n *\r\n * @returns A Promise resolving to the loaded model object, or `null` if failed.\r\n */\r\n async fetchModel(path: string, scene: Scene, options?: ModelFetchOptions) {\r\n const id = this.VFS.normalizePath(path);\r\n const model = await this._assetManager.fetchModel(scene, id, options);\r\n if (model) {\r\n model.prefabId = id;\r\n this._allocated.set(model, id);\r\n }\r\n return model;\r\n }\r\n /**\r\n * Load a texture directly from an ArrayBuffer or typed array.\r\n *\r\n * - Chooses an appropriate loader based on the provided MIME type.\r\n * - Can upload into an existing texture if `texture` is specified.\r\n *\r\n * @typeParam T - Expected concrete texture type.\r\n * @param arrayBuffer - Raw texture data buffer.\r\n * @param mimeType - MIME type of the texture (must be supported by a registered loader).\r\n * @param srgb - If true, treat image as sRGB; otherwise linear.\r\n * @param samplerOptions - Optional sampler options passed to the loader path.\r\n * @param texture - Optional destination texture to populate.\r\n * @returns A promise that resolves to the created or populated texture.\r\n */\r\n async loadTextureFromBuffer<T extends BaseTexture>(\r\n arrayBuffer: ArrayBuffer | TypedArray,\r\n mimeType: string,\r\n srgb?: boolean,\r\n samplerOptions?: SamplerOptions,\r\n texture?: BaseTexture\r\n ): Promise<T> {\r\n return this._assetManager.loadTextureFromBuffer(arrayBuffer, mimeType, srgb, samplerOptions, texture);\r\n }\r\n /**\r\n * Load a texture by ID and track the allocation for reverse lookup.\r\n *\r\n * @param path - VFS path of the texture file.\r\n * @param options - Optional texture fetch options.\r\n *\r\n * @returns A Promise resolving to the loaded texture, or `null` if failed.\r\n */\r\n async fetchTexture<T extends Texture2D | TextureCube | Texture2DArray>(\r\n path: string,\r\n options?: TextureFetchOptions<T>\r\n ) {\r\n const id = this.VFS.normalizePath(path);\r\n const texture = await this._assetManager.fetchTexture(id, options);\r\n if (texture) {\r\n this._allocated.set(texture, id);\r\n }\r\n return texture;\r\n }\r\n /**\r\n * Load a material by ID and track the allocation for reverse lookup.\r\n *\r\n * @param path - VFS path of the material file.\r\n *\r\n * @returns A Promise resolving to the loaded material, or `null` if failed.\r\n */\r\n async fetchMaterial<T extends Material = MeshMaterial>(path: string, options?: BaseFetchOptions) {\r\n const id = this.VFS.normalizePath(path);\r\n const material = await this._assetManager.fetchMaterial<T>(id, options);\r\n if (material) {\r\n this._allocated.set(material, id);\r\n }\r\n return material;\r\n }\r\n /**\r\n * Reload specific blue print materials\r\n *\r\n * @param filter - Determine whether a blue print material should reload.\r\n *\r\n */\r\n async reloadBluePrintMaterials(filter?: (m: PBRBluePrintMaterial) => boolean) {\r\n await this._assetManager.reloadBluePrintMaterials(filter);\r\n }\r\n /**\r\n * Mark specific blue print as changed\r\n * @param path - BluePrint file path\r\n */\r\n invalidateBluePrint(path: string) {\r\n this._assetManager.invalidateBluePrint(path);\r\n }\r\n /**\r\n * Load a primitive by ID and track the allocation for reverse lookup.\r\n *\r\n * @param path - VFS path of the primitive file.\r\n *\r\n * @returns A Promise resolving to the loaded primitive, or `null` if failed.\r\n */\r\n async fetchPrimitive<T extends Primitive = Primitive>(path: string, options?: BaseFetchOptions) {\r\n const id = this.VFS.normalizePath(path);\r\n const primitive = await this._assetManager.fetchPrimitive<T>(id, options);\r\n if (primitive) {\r\n this._allocated.set(primitive, id);\r\n }\r\n return primitive;\r\n }\r\n /**\r\n * Load a prefab content.\r\n * @param path - Path to the prefab JSON file in VFS.\r\n * @returns A Promise resolving to the prefab json object, or `null` on failure.\r\n */\r\n async loadPrefabContent(path: string): Promise<Nullable<{ type: string; data: object }>> {\r\n try {\r\n const content = (await this._vfs.readFile(path, { encoding: 'utf8' })) as string;\r\n const json = JSON.parse(content) as { type: string; data: object };\r\n return json;\r\n } catch (err) {\r\n console.error(`Failed to load prefab from ${path}:`, err);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Instantiate a prefab from a JSON file via VFS.\r\n * @param parent - Parent node to attach the instantiated prefab to.\r\n * @param path - Path to the prefab JSON file in VFS.\r\n * @returns A Promise resolving to the instantiated `SceneNode`, or `null` on failure.\r\n */\r\n async instantiatePrefab(parent: SceneNode, path: string): Promise<Nullable<SceneNode>> {\r\n try {\r\n const json = await this.loadPrefabContent(path);\r\n ASSERT(json?.type === 'SceneNode', 'Invalid prefab format');\r\n const tmpNode = new DRef(new SceneNode(parent.scene));\r\n tmpNode.get()!.remove();\r\n tmpNode.get()!.prefabId = this._vfs.normalizePath(path);\r\n const node = (await this.deserializeObject<SceneNode>(\r\n tmpNode.get(),\r\n json['data'] as Record<string, unknown>\r\n ))!;\r\n node.prefabId = tmpNode.get()!.prefabId;\r\n node.parent = parent;\r\n node.persistentId = randomUUID();\r\n node.animationSet.resetSkeletonModifiers();\r\n tmpNode.dispose();\r\n return node;\r\n } catch (err) {\r\n console.error(`Failed to instantiate prefab from ${path}:`, err);\r\n return null;\r\n }\r\n }\r\n /**\r\n * Load a scene from a JSON file via VFS.\r\n *\r\n * @remarks\r\n * - Deserializes the scene graph.\r\n * - Attaches scripts referenced by nodes after load (asynchronous).\r\n *\r\n * @param filename - Path to the scene JSON file in VFS.\r\n *\r\n * @returns A Promise resolving to the loaded `Scene`.\r\n */\r\n async loadScene(filename: string): Promise<Nullable<Scene>> {\r\n const content = (await this._vfs.readFile(filename, { encoding: 'utf8' })) as string;\r\n const json = JSON.parse(content);\r\n return await this.deserializeObject<Scene>(null, json);\r\n }\r\n /**\r\n * Save a scene to a JSON file via VFS.\r\n *\r\n * @remarks\r\n * - Collects async export tasks for embedded resources and awaits them.\r\n * - Writes a UTF-8 JSON representation to VFS.\r\n *\r\n * @param scene - Scene to serialize and save.\r\n * @param filename - Destination path in VFS.\r\n */\r\n async saveScene(scene: Scene, filename: string): Promise<void> {\r\n const asyncTasks: Promise<unknown>[] = [];\r\n const content = await this.serializeObject(scene, null, asyncTasks);\r\n await Promise.all(asyncTasks);\r\n await this._vfs.writeFile(filename, JSON.stringify(content, null, 2), {\r\n encoding: 'utf8',\r\n create: true\r\n });\r\n }\r\n private rebuildGraphStructure(\r\n nodes: Record<number, IGraphNode>,\r\n links: { startNodeId: number; startSlotId: number; endNodeId: number; endSlotId: number }[]\r\n ): GraphStructure {\r\n const gs: GraphStructure = {\r\n outgoing: {},\r\n incoming: {}\r\n };\r\n // Initialize adjacency lists\r\n for (const nodeId in nodes) {\r\n gs.outgoing[nodeId] = [];\r\n gs.incoming[nodeId] = [];\r\n }\r\n // Fill with links\r\n for (const link of links) {\r\n const outConnection: NodeConnection = {\r\n targetNodeId: link.endNodeId,\r\n startSlotId: link.startSlotId,\r\n endSlotId: link.endSlotId\r\n };\r\n\r\n const inConnection: NodeConnection = {\r\n targetNodeId: link.startNodeId,\r\n startSlotId: link.startSlotId,\r\n endSlotId: link.endSlotId\r\n };\r\n\r\n gs.outgoing[link.startNodeId]?.push(outConnection);\r\n gs.incoming[link.endNodeId]?.push(inConnection);\r\n }\r\n return gs;\r\n }\r\n private collectReachableBackward(\r\n gs: GraphStructure,\r\n nodes: Record<number, IGraphNode>,\r\n roots: number[]\r\n ): Set<number> {\r\n const reachable = new Set<number>();\r\n const q: number[] = [];\r\n\r\n for (const r of roots) {\r\n if (nodes[r]) {\r\n reachable.add(r);\r\n q.push(r);\r\n }\r\n }\r\n while (q.length > 0) {\r\n const u = q.shift()!;\r\n const ins = gs.incoming[u] || [];\r\n for (const conn of ins) {\r\n const v = conn.targetNodeId; // predecessor\r\n if (!reachable.has(v)) {\r\n reachable.add(v);\r\n q.push(v);\r\n }\r\n }\r\n }\r\n return reachable;\r\n }\r\n private getReverseTopologicalOrderFromRoots(\r\n gs: GraphStructure,\r\n nodes: Record<number, IGraphNode>,\r\n roots: number[]\r\n ): Nullable<{\r\n order: number[];\r\n levels: number[][];\r\n }> {\r\n if (!roots || roots.length === 0) {\r\n return { order: [], levels: [] };\r\n }\r\n const sub = this.collectReachableBackward(gs, nodes, roots);\r\n if (sub.size === 0) {\r\n return { order: [], levels: [] };\r\n }\r\n const outDegree = new Map<number, number>();\r\n for (const id of sub) {\r\n const outs = (gs.outgoing[id] || []).filter((c) => sub.has(c.targetNodeId));\r\n outDegree.set(id, outs.length);\r\n }\r\n let currentLevel = Array.from(outDegree.entries())\r\n .filter(([, deg]) => deg === 0)\r\n .map(([id]) => id);\r\n const result: number[] = [];\r\n const levels: number[][] = [];\r\n while (currentLevel.length > 0) {\r\n levels.push([...currentLevel]);\r\n result.push(...currentLevel);\r\n const nextLevel: number[] = [];\r\n for (const u of currentLevel) {\r\n const ins = gs.incoming[u] || [];\r\n for (const conn of ins) {\r\n const v = conn.targetNodeId; // predecessor\r\n if (!sub.has(v)) {\r\n continue;\r\n }\r\n const deg = outDegree.get(v)! - 1;\r\n outDegree.set(v, deg);\r\n if (deg === 0) {\r\n nextLevel.push(v);\r\n }\r\n }\r\n }\r\n currentLevel = nextLevel;\r\n }\r\n if (result.length !== sub.size) {\r\n console.warn('Subgraph contains cycles (from given roots).');\r\n return null;\r\n }\r\n return { order: result, levels };\r\n }\r\n createBluePrintDAG(\r\n nodeMap: Record<number, IGraphNode>,\r\n roots: number[],\r\n links: { startNodeId: number; startSlotId: number; endNodeId: number; endSlotId: number }[]\r\n ): BlueprintDAG {\r\n const gs = this.rebuildGraphStructure(nodeMap, links);\r\n for (const k in gs.incoming) {\r\n const node = nodeMap[k];\r\n for (const conn of gs.incoming[k]) {\r\n const input = node.inputs.find((input) => input.id === conn.endSlotId)!;\r\n input.inputNode = nodeMap[conn.targetNodeId];\r\n input.inputId = conn.startSlotId;\r\n }\r\n }\r\n return {\r\n graph: gs,\r\n nodeMap,\r\n roots,\r\n order: this.getReverseTopologicalOrderFromRoots(gs, nodeMap, roots)!.order.reverse()\r\n };\r\n }\r\n async loadBluePrint(path: string) {\r\n return this._assetManager.loadBluePrint(path);\r\n }\r\n /**\r\n * Clear cached allocations and asset-manager caches.\r\n *\r\n * @remarks\r\n * Useful when reloading content or changing VFS mounts.\r\n */\r\n clearCache() {\r\n this._allocated = new WeakMap();\r\n this._assetManager.clearCache();\r\n }\r\n private static readonly _pathPattern = /^([^\\][]+)(?:\\[(\\d+)\\])?$/;\r\n private static parsePropertyPath(str: string) {\r\n const match = str.match(this._pathPattern);\r\n if (match) {\r\n return {\r\n original: match[0],\r\n prefix: match[1],\r\n index: match[2] || null,\r\n indexValue: match[2] ? parseInt(match[2], 10) : null,\r\n hasIndex: !!match[2]\r\n };\r\n }\r\n return null;\r\n }\r\n /**\r\n * Find the object targeted by an animation track starting from a node.\r\n *\r\n * @remarks\r\n * - Parses a target path like `prop/subprop[0]/child` where indexed entries\r\n * require `object_array` type and non-indexed entries require `object` type.\r\n * - Returns `null` if any segment cannot be resolved through registered metadata.\r\n *\r\n * @param node - Root node used as the starting point.\r\n * @param track - Property track containing a target path.\r\n *\r\n * @returns The resolved target object, or `null` if not found.\r\n */\r\n findAnimationTarget(node: SceneNode, track: PropertyTrack) {\r\n const target = track.target ?? '';\r\n const value: RequireOptionals<PropertyValue> = { num: [], bool: [], str: [], object: [] };\r\n const parts = target.split('/').filter((val) => !!val);\r\n let targetObj: Nullable<object> = node;\r\n while (parts.length > 0) {\r\n const propName = parts.shift()!;\r\n const info = ResourceManager.parsePropertyPath(propName);\r\n if (!info) {\r\n return null;\r\n }\r\n const cls = this.getClassByConstructor(targetObj.constructor as GenericConstructor);\r\n if (!cls) {\r\n return null;\r\n }\r\n const prop = this.getPropertyByClass(cls, info.prefix);\r\n if (!prop) {\r\n return null;\r\n }\r\n if (info.hasIndex) {\r\n if (prop.type !== 'object_array') {\r\n return null;\r\n }\r\n prop.get.call(targetObj, value);\r\n targetObj = value.object?.[info.indexValue!] ?? null;\r\n } else {\r\n if (prop.type !== 'object') {\r\n return null;\r\n }\r\n prop.get.call(targetObj, value);\r\n targetObj = value.object?.[0] ?? null;\r\n }\r\n if (!targetObj) {\r\n return null;\r\n }\r\n }\r\n return targetObj;\r\n }\r\n /** @internal */\r\n private registerProps(cls: SerializableClass) {\r\n if (!this._clsPropMap.get(cls)) {\r\n const props = cls.getProps() ?? [];\r\n this._clsPropMap.set(cls, props);\r\n for (const prop of props) {\r\n const path = `/${cls.name}/${prop.name}`;\r\n if (this._propMap[path]) {\r\n throw new Error(`Cannot register property ${path}: property name already exists`);\r\n }\r\n this._propMap[path] = prop;\r\n this._propNameMap.set(prop, path);\r\n }\r\n }\r\n }\r\n private getDefaultValue<T>(obj: T, prop: PropertyAccessor<T>) {\r\n let v = prop.getDefaultValue?.call(obj) ?? prop.default;\r\n if (v === undefined) {\r\n v = defaultValues[prop.type];\r\n }\r\n return v;\r\n }\r\n private isSerializedObjectEnvelope(v: unknown): v is Record<string, unknown> {\r\n return (\r\n !!v &&\r\n typeof v === 'object' &&\r\n !Array.isArray(v) &&\r\n typeof (v as Record<string, unknown>).ClassName === 'string'\r\n );\r\n }\r\n private async deserializeObjectPropsForCls<T extends object>(\r\n obj: T,\r\n cls: SerializableClass,\r\n json: Record<string, unknown>\r\n ) {\r\n const props = (this.getPropertiesByClass(cls) ?? []).sort((a, b) => (a.phase ?? 0) - (b.phase ?? 0));\r\n let currentPhase: number | undefined = undefined;\r\n const promises: Promise<void>[] = [];\r\n for (const prop of props) {\r\n const phase = prop.phase ?? 0;\r\n if (phase !== currentPhase) {\r\n currentPhase = phase;\r\n if (promises.length > 0) {\r\n await Promise.all(promises);\r\n }\r\n }\r\n if (prop.type === 'command') {\r\n continue;\r\n }\r\n if (!prop.set) {\r\n continue;\r\n }\r\n if (prop.isValid && !prop.isValid.call(obj)) {\r\n continue;\r\n }\r\n const persistent = prop.isPersistent?.call(obj) ?? true;\r\n if (!persistent) {\r\n continue;\r\n }\r\n const k = prop.name;\r\n const v = json[k] ?? this.getDefaultValue(obj, prop);\r\n const tmpVal: RequireOptionals<PropertyValue> = {\r\n num: [0, 0, 0, 0],\r\n str: [''],\r\n bool: [false],\r\n object: [null]\r\n };\r\n switch (prop.type) {\r\n case 'object':\r\n if (typeof v === 'string' && v) {\r\n tmpVal.str[0] = v;\r\n } else {\r\n tmpVal.object[0] = v\r\n ? Array.isArray(v)\r\n ? v\r\n : this.isSerializedObjectEnvelope(v)\r\n ? ((await this.deserializeObject<any>(obj, v)) ?? null)\r\n : v\r\n : null;\r\n }\r\n break;\r\n case 'object_array':\r\n tmpVal.object = [];\r\n if (Array.isArray(v)) {\r\n for (const p of v) {\r\n if (typeof p === 'string' && p) {\r\n tmpVal.str[0] = p;\r\n } else {\r\n tmpVal.object.push(\r\n p\r\n ? this.isSerializedObjectEnvelope(p)\r\n ? ((await this.deserializeObject<any>(obj, p)) ?? null)\r\n : p\r\n : null\r\n );\r\n }\r\n }\r\n }\r\n break;\r\n case 'embedded':\r\n if (typeof v === 'string' && v) {\r\n tmpVal.str[0] = v;\r\n }\r\n break;\r\n case 'float':\r\n case 'int':\r\n tmpVal.num[0] = v;\r\n break;\r\n case 'string':\r\n tmpVal.str[0] = v;\r\n break;\r\n case 'bool':\r\n tmpVal.bool[0] = v;\r\n break;\r\n case 'vec2':\r\n case 'int2':\r\n tmpVal.num[0] = v[0];\r\n tmpVal.num[1] = v[1];\r\n break;\r\n case 'vec3':\r\n case 'int3':\r\n case 'rgb':\r\n tmpVal.num[0] = v[0];\r\n tmpVal.num[1] = v[1];\r\n tmpVal.num[2] = v[2];\r\n break;\r\n case 'vec4':\r\n case 'int4':\r\n case 'rgba':\r\n tmpVal.num[0] = v[0];\r\n tmpVal.num[1] = v[1];\r\n tmpVal.num[2] = v[2];\r\n tmpVal.num[3] = v[3];\r\n break;\r\n }\r\n promises.push(Promise.resolve(prop.set.call(obj, tmpVal, -1)));\r\n }\r\n if (promises.length > 0) {\r\n await Promise.all(promises);\r\n }\r\n }\r\n private async serializeObjectPropsForCls<T extends object>(\r\n obj: T,\r\n cls: SerializableClass,\r\n json: Record<string, unknown>,\r\n asyncTasks?: Nullable<Promise<unknown>[]>\r\n ) {\r\n const props = this.getPropertiesByClass(cls) ?? [];\r\n for (const prop of props) {\r\n if (prop.isValid && !prop.isValid.call(obj)) {\r\n continue;\r\n }\r\n if (prop.type === 'command') {\r\n continue;\r\n }\r\n const persistent = prop.isPersistent?.call(obj) ?? true;\r\n if (!persistent) {\r\n continue;\r\n }\r\n const tmpVal: RequireOptionals<PropertyValue> = {\r\n num: [0, 0, 0, 0],\r\n str: [''],\r\n bool: [false],\r\n object: [null]\r\n };\r\n const k = prop.name;\r\n prop.get.call(obj, tmpVal);\r\n switch (prop.type) {\r\n case 'object': {\r\n const value =\r\n typeof tmpVal.str[0] === 'string' && tmpVal.str[0]\r\n ? tmpVal.str[0]\r\n : tmpVal.object[0]\r\n ? Array.isArray(tmpVal.object[0])\r\n ? tmpVal.object[0]\r\n : await this.serializeObject(tmpVal.object[0], {}, asyncTasks)\r\n : null;\r\n if (value) {\r\n json[k] = value;\r\n }\r\n break;\r\n }\r\n case 'object_array':\r\n if (tmpVal.object.length > 0) {\r\n const arr: unknown[] = [];\r\n for (const p of tmpVal.object) {\r\n arr.push(await this.serializeObject(p, {}, asyncTasks));\r\n }\r\n json[k] = arr;\r\n }\r\n break;\r\n case 'embedded': {\r\n const relativePath = tmpVal.str[0].startsWith('/') ? tmpVal.str[0].slice(1) : tmpVal.str[0];\r\n json[k] = relativePath;\r\n if (asyncTasks) {\r\n const resource = tmpVal.object[0];\r\n asyncTasks.push(\r\n (async () => {\r\n const buffer = (await resource) as ArrayBuffer;\r\n await this.VFS.writeFile(relativePath, buffer, {\r\n encoding: 'binary',\r\n create: true\r\n });\r\n })()\r\n );\r\n }\r\n break;\r\n }\r\n case 'float':\r\n case 'int':\r\n if (\r\n (prop.default === undefined && !prop.getDefaultValue) ||\r\n this.getDefaultValue(obj, prop) !== tmpVal.num[0]\r\n ) {\r\n json[k] = tmpVal.num[0];\r\n }\r\n break;\r\n case 'string':\r\n if (\r\n (prop.default === undefined && !prop.getDefaultValue) ||\r\n this.getDefaultValue(obj, prop) !== tmpVal.str[0]\r\n ) {\r\n json[k] = tmpVal.str[0];\r\n }\r\n break;\r\n case 'bool':\r\n if (\r\n (prop.default === undefined && !prop.getDefaultValue) ||\r\n this.getDefaultValue(obj, prop) !== tmpVal.bool[0]\r\n ) {\r\n json[k] = tmpVal.bool[0];\r\n }\r\n break;\r\n case 'vec2':\r\n case 'int2':\r\n if (prop.default !== undefined || !!prop.getDefaultValue) {\r\n const v = this.getDefaultValue(obj, prop);\r\n if (v[0] === tmpVal.num[0] && v[1] === tmpVal.num[1]) {\r\n break;\r\n }\r\n }\r\n json[k] = [tmpVal.num[0], tmpVal.num[1]];\r\n break;\r\n case 'vec3':\r\n case 'int3':\r\n case 'rgb':\r\n if (prop.default !== undefined || !!prop.getDefaultValue) {\r\n const v = this.getDefaultValue(obj, prop);\r\n if (v[0] === tmpVal.num[0] && v[1] === tmpVal.num[1] && v[2] === tmpVal.num[2]) {\r\n break;\r\n }\r\n }\r\n json[k] = [tmpVal.num[0], tmpVal.num[1], tmpVal.num[2]];\r\n break;\r\n case 'vec4':\r\n case 'int4':\r\n case 'rgba':\r\n if (prop.default !== undefined || !!prop.getDefaultValue) {\r\n const v = this.getDefaultValue(obj, prop);\r\n if (\r\n v[0] === tmpVal.num[0] &&\r\n v[1] === tmpVal.num[1] &&\r\n v[2] === tmpVal.num[2] &&\r\n v[3] === tmpVal.num[3]\r\n ) {\r\n break;\r\n }\r\n }\r\n json[k] = [tmpVal.num[0], tmpVal.num[1], tmpVal.num[2], tmpVal.num[3]];\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n"],"names":["defaultValues","bool","float","int","int2","int3","int4","object","object_array","embedded","rgb","rgba","string","vec2","vec3","vec4","command","ResourceManager","_classMap","_vfs","_propMap","_propNameMap","_clsPropMap","_assetManager","_editorMode","_allocated","vfs","editorMode","WeakMap","AssetManager","Map","getJSONPropClass","getJSONNumberClass","getJSONStringClass","getJSONBoolClass","getJSONObjectClass","getJSONArrayClass","getScriptAttachmentClass","getAABBClass","getInterpolatorClass","getSkeletonRigClass","getSkinBindingClass","getSkeletonClass","getJointDynamicsModifierClass","getAnimationClass","getPropTrackClass","getNodeRotationTrackClass","getNodeScaleTrackClass","getNodeTranslationTrackClass","getNodeEulerRotationTrackClass","getFixedGeometryCacheTrackClass","getPCAGeometryCacheTrackClass","getMorphTrackClass","getSceneNodeClass","getGraphNodeClass","getMeshClass","getSpriteClass","getTextSpriteClass","getMSDFTextSpriteClass","getMSDFTextClass","getWaterClass","getTerrainClass","getFFTWaveGeneratorClass","getFBMWaveGeneratorClass","getParticleNodeClass","getPunctualLightClass","getDirectionalLightClass","getSpotLightClass","getRectLightClass","getPointLightClass","getCameraClass","getPerspectiveCameraClass","getOrthoCameraClass","getBatchGroupClass","getSceneClass","getMeshMaterialClass","getPBRBluePrintMaterialClass","getSpriteBlueprintMaterialClass","getUnlitMaterialClass","getLambertMaterialClass","getBlinnMaterialClass","getPBRMetallicRoughnessMaterialClass","getPBRSpecularGlossinessMaterialClass","getParticleMaterialClass","getSpriteMaterialClass","getStandardSpriteMaterialClass","getBoxShapeClass","getBoxFrameShapeClass","getSphereShapeClass","getTorusShapeClass","getCylinderShapeClass","getPlaneShapeClass","getTetrahedronShapeClass","getCapsuleShapeClass","ConstantScalarNode","getSerializationCls","ConstantVec2Node","ConstantVec3Node","ConstantVec4Node","ConstantBooleanNode","ConstantBVec2Node","ConstantBVec3Node","ConstantBVec4Node","ConstantTexture2DNode","ConstantTexture2DArrayNode","ConstantTextureCubeNode","MakeVectorNode","SwizzleNode","EqualNode","NotEqualNode","LogicallyAndNode","LogicallyOrNode","CompComparisonNode","AnyConditionNode","AllConditionNode","SelectionNode","Degrees2RadiansNode","Radians2DegreesNode","SinNode","CosNode","TanNode","ArcSinNode","ArcCosNode","ArcTanNode","ArcTan2Node","SinHNode","CosHNode","TanHNode","ArcsineHNode","ArccosineHNode","ArctangentHNode","ExpNode","Exp2Node","LogNode","Log2Node","SqrtNode","InvSqrtNode","AbsNode","SignNode","FloorNode","CeilNode","FractNode","DDXNode","DDYNode","FWidthNode","CompAddNode","CompSubNode","CompMulNode","CompDivNode","ModNode","MinNode","MaxNode","PowNode","StepNode","SmoothStepNode","FmaNode","ClampNode","SaturateNode","MixNode","NormalizeNode","TransformNode","RotateAboutAxisNode","FaceForwardNode","ReflectNode","RefractNode","LengthNode","DistanceNode","DotProductNode","CrossProductNode","Hash1Node","Hash2Node","Hash3Node","SimplexNoise2DNode","PerlinNoise2DNode","VertexOutputNode","VertexIndexNode","InstanceIndexNode","VertexColorNode","VertexUVNode","VertexPositionNode","PixelWorldPositionNode","VertexNormalNode","PixelNormalNode","VertexTangentNode","VertexBinormalNode","ViewMatrixNode","ProjectionMatrixNode","ViewProjMatrixNode","InvProjMatrixNode","InvViewProjMatrixNode","BillboardMatrixNode","CameraPositionNode","CameraVectorNode","CameraNearFarNode","SkyEnvTextureNode","ElapsedTimeNode","PBRBlockNode","SpriteBlockNode","VertexBlockNode","ResolveVertexPositionNode","ResolveVertexTangentNode","ResolveVertexNormalNode","FunctionInputNode","FunctionOutputNode","FunctionCallNode","PannerNode","TextureSampleNode","map","val","ctor","k","registerProps","VFS","assetManager","getClasses","values","getClassByConstructor","current","Function","prototype","cls","get","Object","getPrototypeOf","getClassByObject","obj","getClassByName","className","name","getClassByProperty","prop","indexOf","getPropertiesByClass","getAllPropertiesByClass","props","classProps","has","set","parent","getPropertyByClass","find","value","getPropertyByName","getPropertyName","registerClass","getAssetId","asset","setAssetId","id","delete","setModelLoader","mimeType","loader","fetchBinary","path","options","normalizePath","data","fetchBinaryData","fetchFontAsset","fontAsset","getFontAsset","releaseFontAsset","serializeObject","json","asyncTasks","undefined","index","findIndex","Error","info","flags","saveProps","initParams","getInitParams","ClassName","Init","serializeObjectProps","serializeObjectPropsForCls","deserializeObject","ctx","String","p","loadProps","createFunc","result","Promise","deserializeObjectProps","deserializeObjectPropsForCls","fetchModel","scene","model","prefabId","loadTextureFromBuffer","arrayBuffer","srgb","samplerOptions","texture","fetchTexture","fetchMaterial","material","reloadBluePrintMaterials","filter","invalidateBluePrint","fetchPrimitive","primitive","loadPrefabContent","content","readFile","encoding","JSON","parse","err","console","error","instantiatePrefab","ASSERT","type","tmpNode","DRef","SceneNode","remove","node","persistentId","randomUUID","animationSet","resetSkeletonModifiers","dispose","loadScene","filename","saveScene","all","writeFile","stringify","create","rebuildGraphStructure","nodes","links","gs","outgoing","incoming","nodeId","link","outConnection","targetNodeId","endNodeId","startSlotId","endSlotId","inConnection","startNodeId","push","collectReachableBackward","roots","reachable","Set","q","r","add","length","u","shift","ins","conn","v","getReverseTopologicalOrderFromRoots","order","levels","sub","size","outDegree","outs","c","currentLevel","Array","from","entries","deg","nextLevel","warn","createBluePrintDAG","nodeMap","input","inputs","inputNode","inputId","graph","reverse","loadBluePrint","clearCache","_pathPattern","parsePropertyPath","str","match","original","prefix","indexValue","parseInt","hasIndex","findAnimationTarget","track","target","num","parts","split","targetObj","propName","call","getProps","getDefaultValue","default","isSerializedObjectEnvelope","isArray","sort","a","b","phase","currentPhase","promises","isValid","persistent","isPersistent","tmpVal","resolve","arr","relativePath","startsWith","slice","resource","buffer"],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sources":["../../../src/utility/serialization/manager.ts"],"sourcesContent":["import type { Nullable, RequireOptionals } from '@zephyr3d/base';\nimport { ASSERT, DRef, randomUUID, type GenericConstructor, type TypedArray, type VFS } from '@zephyr3d/base';\nimport type { PropertyAccessor, PropertyType, PropertyValue, SerializableClass } from './types';\nimport { getAABBClass } from './scene/misc';\nimport { getGraphNodeClass, getSceneNodeClass } from './scene/node';\nimport { getBatchGroupClass } from './scene/batch';\nimport { getCameraClass, getPerspectiveCameraClass, getOrthoCameraClass } from './scene/camera';\nimport {\n getPunctualLightClass,\n getDirectionalLightClass,\n getSpotLightClass,\n getPointLightClass,\n getRectLightClass\n} from './scene/light';\nimport {\n getMeshMaterialClass,\n getSubsurfaceProfileClass,\n getUnlitMaterialClass,\n getMToonMaterialClass,\n getLambertMaterialClass,\n getBlinnMaterialClass,\n getPBRMetallicRoughnessMaterialClass,\n getPBRSpecularGlossinessMaterialClass,\n getParticleMaterialClass,\n getPBRBluePrintMaterialClass,\n getSpriteMaterialClass,\n getSpriteBlueprintMaterialClass,\n getStandardSpriteMaterialClass\n} from './scene/material';\nimport { getMeshClass } from './scene/mesh';\nimport { getParticleNodeClass } from './scene/particle';\nimport {\n getBoxShapeClass,\n getBoxFrameShapeClass,\n getCapsuleShapeClass,\n getSphereShapeClass,\n getTorusShapeClass,\n getCylinderShapeClass,\n getPlaneShapeClass,\n getTetrahedronShapeClass\n} from './scene/primitive';\nimport { getSceneClass } from './scene/scene';\nimport { getTerrainClass } from './scene/terrain';\nimport { getWaterClass, getFFTWaveGeneratorClass, getFBMWaveGeneratorClass } from './scene/water';\nimport { getMSDFTextClass, getMSDFTextSpriteClass, getTextSpriteClass } from './scene/text';\nimport {\n getAnimationClass,\n getFixedGeometryCacheTrackClass,\n getInterpolatorClass,\n getJointDynamicsModifierClass,\n getMorphTrackClass,\n getPCAGeometryCacheTrackClass,\n getNodeEulerRotationTrackClass,\n getNodeRotationTrackClass,\n getNodeScaleTrackClass,\n getNodeTranslationTrackClass,\n getPropTrackClass,\n getSkeletonClass,\n getSkeletonRigClass,\n getSkinBindingClass\n} from './scene/animation';\nimport type { Scene } from '../../scene';\nimport { SceneNode } from '../../scene';\nimport type { PropertyTrack } from '../../animation';\nimport type { ModelFetchOptions, ModelLoader, TextureFetchOptions } from '../../asset';\nimport { AssetManager } from '../../asset';\nimport type { BaseTexture, SamplerOptions, Texture2D, Texture2DArray, TextureCube } from '@zephyr3d/device';\nimport {\n getJSONBoolClass,\n getJSONObjectClass,\n getJSONNumberClass,\n getJSONPropClass,\n getJSONStringClass,\n getJSONArrayClass\n} from './json';\nimport { getScriptAttachmentClass } from './scene/script';\nimport {\n ConstantBooleanNode,\n ConstantBVec2Node,\n ConstantBVec3Node,\n ConstantBVec4Node,\n ConstantScalarNode,\n ConstantVec2Node,\n ConstantVec3Node,\n ConstantVec4Node\n} from '../blueprint/common/constants';\nimport {\n ConstantTexture2DArrayNode,\n ConstantTexture2DNode,\n ConstantTextureCubeNode,\n PannerNode,\n TextureSampleNode\n} from '../blueprint/material/texture';\nimport {\n AbsNode,\n ArccosineHNode,\n ArcCosNode,\n ArcsineHNode,\n ArcSinNode,\n ArcTan2Node,\n ArctangentHNode,\n ArcTanNode,\n CeilNode,\n ClampNode,\n CompAddNode,\n CompDivNode,\n CompMulNode,\n CompSubNode,\n CosHNode,\n CosNode,\n CrossProductNode,\n DDXNode,\n DDYNode,\n Degrees2RadiansNode,\n DistanceNode,\n DotProductNode,\n Exp2Node,\n ExpNode,\n FaceForwardNode,\n FloorNode,\n FmaNode,\n FractNode,\n FWidthNode,\n PerlinNoise2DNode,\n InvSqrtNode,\n LengthNode,\n Log2Node,\n LogNode,\n MakeVectorNode,\n MaxNode,\n MinNode,\n MixNode,\n ModNode,\n NormalizeNode,\n PowNode,\n Radians2DegreesNode,\n ReflectNode,\n RefractNode,\n RotateAboutAxisNode,\n SaturateNode,\n SignNode,\n SimplexNoise2DNode,\n SinHNode,\n SinNode,\n SqrtNode,\n StepNode,\n TanHNode,\n TanNode,\n TransformNode,\n Hash1Node,\n Hash2Node,\n Hash3Node,\n SwizzleNode,\n CompComparisonNode,\n AnyConditionNode,\n AllConditionNode,\n SelectionNode,\n EqualNode,\n NotEqualNode,\n LogicallyAndNode,\n LogicallyOrNode,\n SmoothStepNode\n} from '../blueprint/common/math';\nimport {\n BillboardMatrixNode,\n CameraNearFarNode,\n CameraPositionNode,\n CameraVectorNode,\n ElapsedTimeNode,\n InstanceIndexNode,\n InvProjMatrixNode,\n InvViewProjMatrixNode,\n PixelNormalNode,\n PixelWorldPositionNode,\n ProjectionMatrixNode,\n ResolveVertexNormalNode,\n ResolveVertexPositionNode,\n ResolveVertexTangentNode,\n SkyEnvTextureNode,\n VertexBinormalNode,\n VertexColorNode,\n VertexIndexNode,\n VertexNormalNode,\n VertexOutputNode,\n VertexPositionNode,\n VertexTangentNode,\n VertexUVNode,\n ViewMatrixNode,\n ViewProjMatrixNode\n} from '../blueprint/material/inputs';\nimport { PBRBlockNode, SpriteBlockNode, VertexBlockNode } from '../blueprint/material/pbr';\nimport type { BlueprintDAG, GraphStructure, IGraphNode, NodeConnection } from '../blueprint/node';\nimport type { Material, MeshMaterial, PBRBluePrintMaterial } from '../../material';\nimport type { Primitive } from '../../render';\nimport { FunctionCallNode, FunctionInputNode, FunctionOutputNode } from '../blueprint/material/func';\nimport { getSpriteClass } from './scene/sprite';\nimport type { FontAssetFetchOptions } from '../../asset';\n\nconst defaultValues: Record<PropertyType, any> = {\n bool: false,\n float: 0,\n int: 0,\n int2: [0, 0],\n int3: [0, 0, 0],\n int4: [0, 0, 0, 0],\n object: null,\n object_array: [],\n embedded: '',\n rgb: [0, 0, 0],\n rgba: [0, 0, 0, 0],\n string: '',\n vec2: [0, 0],\n vec3: [0, 0, 0],\n vec4: [0, 0, 0, 0],\n command: null\n};\n\n/**\n * Manages serialization and deserialization of engine objects to/from JSON,\n * including asset resolution via a virtual file system (VFS) and asset manager.\n *\n * @remarks\n * - Keeps a registry of serializable classes and their properties.\n * - Converts object graphs to JSON using per-class metadata and property accessors.\n * - Supports async asset embedding/export and lazy deserialization via phases.\n * - Maps loaded assets/objects back to their source IDs for caching and deduplication.\n *\n * Typical workflow:\n * 1. Construct with a `VFS`.\n * 2. Optionally `registerClass` for custom types.\n * 3. Use `serializeObject` and `deserializeObject` to convert between runtime objects and JSON.\n * 4. Use `saveScene` / `loadScene` for scene I/O.\n *\n * Caching:\n * - `getAssetId` returns the known source ID for an allocated asset when available.\n *\n * Threading:\n * - Methods returning Promises perform async I/O using the provided `VFS`/AssetManager.\n *\n * @public\n */\nexport class ResourceManager {\n private readonly _classMap: Map<GenericConstructor, SerializableClass>;\n private _vfs: VFS;\n private _propMap: Record<string, PropertyAccessor>;\n private readonly _propNameMap: Map<PropertyAccessor, string>;\n private readonly _clsPropMap: Map<SerializableClass, PropertyAccessor[]>;\n private readonly _assetManager: AssetManager;\n private readonly _editorMode: boolean;\n private _allocated: WeakMap<any, string>;\n /**\n * Create a ResourceManager bound to a virtual file system.\n *\n * @param vfs - Virtual file system used for reading/writing assets and scenes.\n */\n constructor(vfs: VFS, editorMode = false) {\n this._vfs = vfs;\n this._editorMode = editorMode;\n this._allocated = new WeakMap();\n this._assetManager = new AssetManager(this);\n this._propMap = {};\n this._propNameMap = new Map();\n this._clsPropMap = new Map();\n this._classMap = new Map<GenericConstructor, SerializableClass>(\n [\n getJSONPropClass(),\n getJSONNumberClass(),\n getJSONStringClass(),\n getJSONBoolClass(),\n getJSONObjectClass(),\n getJSONArrayClass(),\n getScriptAttachmentClass(),\n getAABBClass(),\n getInterpolatorClass(),\n getSkeletonClass(),\n getSkeletonRigClass(),\n getSkinBindingClass(),\n getJointDynamicsModifierClass(),\n getAnimationClass(this),\n getPropTrackClass(this),\n getNodeRotationTrackClass(),\n getNodeScaleTrackClass(),\n getNodeTranslationTrackClass(),\n getNodeEulerRotationTrackClass(),\n getFixedGeometryCacheTrackClass(),\n getPCAGeometryCacheTrackClass(),\n getMorphTrackClass(),\n getSceneNodeClass(this),\n getGraphNodeClass(),\n getMeshClass(),\n getSpriteClass(),\n getTextSpriteClass(),\n getMSDFTextSpriteClass(),\n getMSDFTextClass(),\n getWaterClass(this),\n getTerrainClass(this),\n getFFTWaveGeneratorClass(),\n getFBMWaveGeneratorClass(),\n getParticleNodeClass(),\n getPunctualLightClass(),\n getDirectionalLightClass(),\n getSpotLightClass(),\n getPointLightClass(),\n getRectLightClass(),\n getCameraClass(),\n getPerspectiveCameraClass(),\n getOrthoCameraClass(),\n getBatchGroupClass(),\n getSceneClass(this),\n getSubsurfaceProfileClass(),\n ...getMeshMaterialClass(),\n ...getPBRBluePrintMaterialClass(),\n ...getSpriteBlueprintMaterialClass(),\n ...getUnlitMaterialClass(this),\n ...getMToonMaterialClass(this),\n ...getLambertMaterialClass(this),\n ...getBlinnMaterialClass(this),\n ...getPBRMetallicRoughnessMaterialClass(this),\n ...getPBRSpecularGlossinessMaterialClass(this),\n ...getParticleMaterialClass(this),\n ...getSpriteMaterialClass(this),\n ...getStandardSpriteMaterialClass(this),\n\n getBoxShapeClass(),\n getBoxFrameShapeClass(),\n getCapsuleShapeClass(),\n getSphereShapeClass(),\n getTorusShapeClass(),\n getCylinderShapeClass(),\n getPlaneShapeClass(),\n getTetrahedronShapeClass(),\n ConstantScalarNode.getSerializationCls(),\n ConstantVec2Node.getSerializationCls(),\n ConstantVec3Node.getSerializationCls(),\n ConstantVec4Node.getSerializationCls(),\n ConstantBooleanNode.getSerializationCls(),\n ConstantBVec2Node.getSerializationCls(),\n ConstantBVec3Node.getSerializationCls(),\n ConstantBVec4Node.getSerializationCls(),\n ConstantTexture2DNode.getSerializationCls(),\n ConstantTexture2DArrayNode.getSerializationCls(),\n ConstantTextureCubeNode.getSerializationCls(),\n MakeVectorNode.getSerializationCls(),\n SwizzleNode.getSerializationCls(),\n EqualNode.getSerializationCls(),\n NotEqualNode.getSerializationCls(),\n LogicallyAndNode.getSerializationCls(),\n LogicallyOrNode.getSerializationCls(),\n CompComparisonNode.getSerializationCls(),\n AnyConditionNode.getSerializationCls(),\n AllConditionNode.getSerializationCls(),\n SelectionNode.getSerializationCls(),\n Degrees2RadiansNode.getSerializationCls(),\n Radians2DegreesNode.getSerializationCls(),\n SinNode.getSerializationCls(),\n CosNode.getSerializationCls(),\n TanNode.getSerializationCls(),\n ArcSinNode.getSerializationCls(),\n ArcCosNode.getSerializationCls(),\n ArcTanNode.getSerializationCls(),\n ArcTan2Node.getSerializationCls(),\n SinHNode.getSerializationCls(),\n CosHNode.getSerializationCls(),\n TanHNode.getSerializationCls(),\n ArcsineHNode.getSerializationCls(),\n ArccosineHNode.getSerializationCls(),\n ArctangentHNode.getSerializationCls(),\n ExpNode.getSerializationCls(),\n Exp2Node.getSerializationCls(),\n LogNode.getSerializationCls(),\n Log2Node.getSerializationCls(),\n SqrtNode.getSerializationCls(),\n InvSqrtNode.getSerializationCls(),\n AbsNode.getSerializationCls(),\n SignNode.getSerializationCls(),\n FloorNode.getSerializationCls(),\n CeilNode.getSerializationCls(),\n FractNode.getSerializationCls(),\n DDXNode.getSerializationCls(),\n DDYNode.getSerializationCls(),\n FWidthNode.getSerializationCls(),\n CompAddNode.getSerializationCls(),\n CompSubNode.getSerializationCls(),\n CompMulNode.getSerializationCls(),\n CompDivNode.getSerializationCls(),\n ModNode.getSerializationCls(),\n MinNode.getSerializationCls(),\n MaxNode.getSerializationCls(),\n PowNode.getSerializationCls(),\n StepNode.getSerializationCls(),\n SmoothStepNode.getSerializationCls(),\n FmaNode.getSerializationCls(),\n ClampNode.getSerializationCls(),\n SaturateNode.getSerializationCls(),\n MixNode.getSerializationCls(),\n NormalizeNode.getSerializationCls(),\n TransformNode.getSerializationCls(),\n RotateAboutAxisNode.getSerializationCls(),\n FaceForwardNode.getSerializationCls(),\n ReflectNode.getSerializationCls(),\n RefractNode.getSerializationCls(),\n LengthNode.getSerializationCls(),\n DistanceNode.getSerializationCls(),\n DotProductNode.getSerializationCls(),\n CrossProductNode.getSerializationCls(),\n Hash1Node.getSerializationCls(),\n Hash2Node.getSerializationCls(),\n Hash3Node.getSerializationCls(),\n SimplexNoise2DNode.getSerializationCls(),\n PerlinNoise2DNode.getSerializationCls(),\n VertexColorNode.getSerializationCls(),\n VertexUVNode.getSerializationCls(),\n VertexPositionNode.getSerializationCls(),\n PixelWorldPositionNode.getSerializationCls(),\n VertexNormalNode.getSerializationCls(),\n PixelNormalNode.getSerializationCls(),\n VertexTangentNode.getSerializationCls(),\n VertexBinormalNode.getSerializationCls(),\n ViewMatrixNode.getSerializationCls(),\n ProjectionMatrixNode.getSerializationCls(),\n ViewProjMatrixNode.getSerializationCls(),\n InvProjMatrixNode.getSerializationCls(),\n InvViewProjMatrixNode.getSerializationCls(),\n BillboardMatrixNode.getSerializationCls(),\n CameraPositionNode.getSerializationCls(),\n CameraVectorNode.getSerializationCls(),\n CameraNearFarNode.getSerializationCls(),\n SkyEnvTextureNode.getSerializationCls(),\n ElapsedTimeNode.getSerializationCls(),\n PBRBlockNode.getSerializationCls(),\n SpriteBlockNode.getSerializationCls(),\n VertexBlockNode.getSerializationCls(),\n ResolveVertexPositionNode.getSerializationCls(),\n ResolveVertexTangentNode.getSerializationCls(),\n ResolveVertexNormalNode.getSerializationCls(),\n FunctionInputNode.getSerializationCls(),\n FunctionOutputNode.getSerializationCls(),\n FunctionCallNode.getSerializationCls(this),\n PannerNode.getSerializationCls(),\n TextureSampleNode.getSerializationCls(),\n VertexOutputNode.getSerializationCls(),\n VertexIndexNode.getSerializationCls(),\n InstanceIndexNode.getSerializationCls()\n ].map((val) => [val.ctor, val])\n );\n for (const k of this._classMap) {\n this.registerProps(k[1]);\n }\n }\n /**\n * The virtual file system used by this manager.\n *\n * @remarks\n * Used by asset fetchers and scene save/load operations.\n */\n get VFS() {\n return this._vfs;\n }\n set VFS(vfs: VFS) {\n this._vfs = vfs;\n }\n /**\n * Wethether editor mode is enabled\n *\n * @remarks\n * In editor mode, some properties will be disabled\n */\n get editorMode() {\n return this._editorMode;\n }\n /**\n * AssetManager\n */\n get assetManager() {\n return this._assetManager;\n }\n /**\n * Get the list of all registered serializable classes.\n *\n * @remarks\n * Includes built-in classes registered during construction and any custom classes\n * registered via `registerClass`.\n *\n * @returns An array of `SerializableClass` metadata.\n */\n getClasses(): SerializableClass[] {\n return [...this._classMap.values()];\n }\n /**\n * Get serialization metadata by a constructor function.\n *\n * @param ctor - The class constructor to look up.\n *\n * @returns The `SerializableClass` metadata, or `null` if not found.\n */\n getClassByConstructor(ctor: GenericConstructor) {\n return this._classMap.get(ctor) ?? null;\n }\n /**\n * Get serialization metadata by an object instance.\n *\n * @param obj - The object whose constructor will be used for the lookup.\n *\n * @returns The `SerializableClass` metadata, or `null` if not found.\n */\n getClassByObject(obj: object) {\n return this.getClassByConstructor(obj.constructor as GenericConstructor);\n }\n /**\n * Get serialization metadata by class name.\n *\n * @param className - Fully qualified class name as stored in JSON.\n *\n * @returns The `SerializableClass` metadata, or `null` if not found.\n */\n getClassByName(className: string) {\n for (const val of this._classMap) {\n if (val[0].name === className) {\n return val[1];\n }\n }\n return null;\n }\n /**\n * Find the class that owns a given property accessor.\n *\n * @param prop - Property accessor to search for.\n *\n * @returns The `SerializableClass` that declares the property, or `null` if unknown.\n */\n getClassByProperty(prop: PropertyAccessor): Nullable<SerializableClass> {\n for (const k of this._clsPropMap) {\n if (k[1].indexOf(prop) >= 0) {\n return k[0];\n }\n }\n return null;\n }\n /**\n * Get the properties declared on a given class.\n *\n * @param cls - Serializable class metadata.\n *\n * @returns An array of `PropertyAccessor` entries, or `null` if none.\n */\n getPropertiesByClass(cls: SerializableClass) {\n return this._clsPropMap.get(cls) ?? null;\n }\n /**\n * Get all properties declared on a class, including inherited serializable properties.\n */\n getAllPropertiesByClass(cls: Nullable<SerializableClass>) {\n const props: PropertyAccessor[] = [];\n let current = cls;\n while (current) {\n props.unshift(...(this.getPropertiesByClass(current) ?? []));\n current = current.parent ? this.getClassByConstructor(current.parent) : null;\n }\n return props;\n }\n /**\n * Get a property accessor by class and property name.\n *\n * @param cls - Serializable class metadata.\n * @param name - Property name to search for.\n *\n * @returns The `PropertyAccessor`, or `null` if not found.\n */\n getPropertyByClass(cls: SerializableClass, name: string) {\n return this.getPropertiesByClass(cls)?.find((value) => value.name === name) ?? null;\n }\n /**\n * Get a property accessor by its canonical path.\n *\n * @remarks\n * The canonical path format is `/ClassName/propName`.\n *\n * @param name - Canonical property path.\n *\n * @returns The `PropertyAccessor`, or `null` if not found.\n */\n getPropertyByName(name: string) {\n return this._propMap[name] ?? null;\n }\n /**\n * Get the canonical path for a property accessor.\n *\n * @remarks\n * Returns a string like `/ClassName/propName` if the property is registered.\n *\n * @param prop - Property accessor.\n *\n * @returns The canonical path, or `null` if unknown.\n */\n getPropertyName(prop: PropertyAccessor) {\n return this._propNameMap.get(prop) ?? null;\n }\n /**\n * Register a serializable class and its properties.\n *\n * @remarks\n * - No effect if the class is already registered.\n * - Also registers the class's properties with canonical paths.\n *\n * @param cls - Serializable class metadata to register.\n */\n registerClass(cls: SerializableClass) {\n if (!this._classMap.has(cls.ctor)) {\n this._classMap.set(cls.ctor, cls);\n this.registerProps(cls);\n }\n }\n /**\n * Get the known asset ID previously associated with a loaded/allocated asset.\n *\n * @remarks\n * Returns `null` if the asset was not loaded or tracked by this manager.\n *\n * @param asset - Asset instance (e.g., texture, model group) to look up.\n *\n * @returns The asset ID string, or `null` if unknown.\n */\n getAssetId(asset: unknown) {\n return this._allocated.get(asset) ?? null;\n }\n /**\n * Associate an asset ID to a loaded/allocated asset.\n *\n * @param asset - Asset instance (e.g., texture, model group) to set Id.\n * @param id - Asset ID to associated to this asset.\n *\n */\n setAssetId(asset: unknown, id?: Nullable<string>) {\n if (asset) {\n if (id) {\n this._allocated.set(asset, id);\n } else {\n this._allocated.delete(asset);\n }\n }\n }\n /**\n * Fetch a binary asset by ID via the asset manager.\n *\n * @remarks\n * - Associates the returned data with the given ID for future reverse lookup.\n * - The ID is typically a VFS path or locator.\n *\n * @param id - Asset identifier or path.\n *\n * @returns A Promise that resolves to the binary content, or `null` if not found.\n */\n async fetchBinary(id: string) {\n const data = await this._assetManager.fetchBinaryData(id);\n if (data) {\n this._allocated.set(data, id);\n }\n return data;\n }\n /**\n * Serialize an object to a JSON structure using registered class metadata.\n *\n * @remarks\n * - Throws if the object's class is not registered.\n * - Populates `asyncTasks` with pending I/O tasks for embedded resources.\n *\n * @param obj - The object to serialize.\n * @param json - Optional existing JSON object to fill.\n * @param asyncTasks - Optional list to collect async tasks for embedded asset export.\n *\n * @returns The serialized JSON structure.\n */\n async serializeObject(obj: any, json?: any, asyncTasks?: Nullable<Promise<unknown>[]>) {\n if (obj === null || obj === undefined) {\n return obj;\n }\n const cls = this.getClasses();\n const index = cls.findIndex((val) => val.ctor === obj.constructor);\n if (index < 0) {\n throw new Error('Serialize object failed: Cannot found serialization meta data');\n }\n let info = cls[index];\n const flags = { saveProps: true };\n const initParams = await info?.getInitParams?.(obj, flags);\n json = json ?? {};\n json.ClassName = info.name;\n json.Object = {};\n if (initParams !== undefined && initParams !== null) {\n json.Init = initParams;\n }\n if (flags.saveProps) {\n await this.serializeObjectProps(obj, json.Object, asyncTasks, info);\n }\n return json;\n }\n /**\n * Serialize object properties into a JSON structure.\n *\n * @param obj - The target object to serialize.\n * @param json - The JSON structure to populate.\n * @param asyncTasks - Optional list to collect async tasks for embedded asset export.\n * @param info - Optional serialization metadata for the object's class.\n * @returns A Promise that resolves when serialization is complete.\n */\n async serializeObjectProps(\n obj: any,\n json?: any,\n asyncTasks?: Nullable<Promise<unknown>[]>,\n info?: SerializableClass\n ) {\n if (!info) {\n const cls = this.getClasses();\n const index = cls.findIndex((val) => val.ctor === obj.constructor);\n if (index < 0) {\n throw new Error('Serialize object properties failed: Cannot found serialization meta data');\n }\n info = cls[index];\n }\n json = json ?? {};\n while (info) {\n await this.serializeObjectPropsForCls(obj, info, json, asyncTasks);\n info = this.getClassByConstructor(info.parent!)!;\n }\n return json;\n }\n /**\n * Deserialize a JSON structure into an object instance.\n *\n * @remarks\n * - Uses the `ClassName` field to locate the registered class.\n * - Supports custom `createFunc` and phased property loading.\n *\n * @param ctx - Context object passed to custom constructors/resolvers.\n * @param json - The serialized JSON structure.\n *\n * @returns A Promise resolving to the reconstructed object instance, or `null` on failure.\n */\n async deserializeObject<T extends object>(ctx: any, json: Record<string, unknown>): Promise<Nullable<T>> {\n const cls = this.getClasses();\n const className = json['ClassName'];\n const index = cls.findIndex((val) => val.name === className);\n if (index < 0) {\n throw new Error(\n `Deserialize object failed: Cannot found serialization meta data for class \"${String(className)}\"`\n );\n }\n let info = cls[index];\n const initParams = json['Init'] as { asset?: string };\n json = json['Object'] as Record<string, unknown>;\n let p: T | Promise<T>;\n let loadProps = true;\n if (info.createFunc) {\n let result = info.createFunc(ctx, initParams);\n if (result instanceof Promise) {\n result = await result;\n }\n p = result.obj;\n loadProps = result.loadProps ?? true;\n } else {\n p = new info.ctor() as T;\n }\n //const p: T | Promise<T> = info.createFunc ? info.createFunc(ctx, initParams) : new info.ctor();\n if (!p) {\n return null;\n }\n const obj = p instanceof Promise ? await p : p;\n if (loadProps) {\n await this.deserializeObjectProps(obj, json, info);\n }\n return obj;\n }\n /**\n * Deserialize object properties from JSON into an existing object instance.\n *\n * @param obj - The target object to populate.\n * @param json - The JSON structure containing serialized properties.\n * @param info - Optional serialization metadata for the object's class.\n */\n async deserializeObjectProps(obj: any, json: any, info?: SerializableClass) {\n if (!info) {\n const cls = this.getClasses();\n const index = cls.findIndex((val) => val.ctor === obj.constructor);\n if (index < 0) {\n throw new Error('Deserialize object properties failed: Cannot found serialization meta data');\n }\n info = cls[index];\n }\n while (info) {\n await this.deserializeObjectPropsForCls(obj, info, json);\n info = this.getClassByConstructor(info!.parent!)!;\n }\n }\n /**\n * Load a model by ID and track the allocation for reverse lookup.\n *\n * @param id - Model identifier or path.\n * @param scene - Scene into which the model is loaded.\n * @param options - Optional model fetch options.\n *\n * @returns A Promise resolving to the loaded model object, or `null` if failed.\n */\n async fetchModel(path: string, scene: Scene, options?: ModelFetchOptions) {\n const id = this.VFS.normalizePath(path);\n const model = await this._assetManager.fetchModel(scene, id, options);\n if (model) {\n model.prefabId = id;\n this._allocated.set(model, id);\n }\n return model;\n }\n /**\n * Load a texture directly from an ArrayBuffer or typed array.\n *\n * - Chooses an appropriate loader based on the provided MIME type.\n * - Can upload into an existing texture if `texture` is specified.\n *\n * @typeParam T - Expected concrete texture type.\n * @param arrayBuffer - Raw texture data buffer.\n * @param mimeType - MIME type of the texture (must be supported by a registered loader).\n * @param srgb - If true, treat image as sRGB; otherwise linear.\n * @param samplerOptions - Optional sampler options passed to the loader path.\n * @param texture - Optional destination texture to populate.\n * @returns A promise that resolves to the created or populated texture.\n */\n async loadTextureFromBuffer<T extends BaseTexture>(\n arrayBuffer: ArrayBuffer | TypedArray,\n mimeType: string,\n srgb?: boolean,\n samplerOptions?: SamplerOptions,\n texture?: BaseTexture\n ): Promise<T> {\n return this._assetManager.loadTextureFromBuffer(arrayBuffer, mimeType, srgb, samplerOptions, texture);\n }\n /**\n * Load a texture by ID and track the allocation for reverse lookup.\n *\n * @param id - Texture identifier or path.\n * @param options - Optional texture fetch options.\n *\n * @returns A Promise resolving to the loaded texture, or `null` if failed.\n */\n async fetchTexture<T extends Texture2D | TextureCube | Texture2DArray>(\n id: string,\n options?: TextureFetchOptions<T>\n ) {\n const texture = await this._assetManager.fetchTexture(id, options);\n if (texture) {\n this._allocated.set(texture, id);\n }\n return texture;\n }\n /**\n * Load a material by ID and track the allocation for reverse lookup.\n *\n * @param id - Material identifier or path.\n *\n * @returns A Promise resolving to the loaded material, or `null` if failed.\n */\n async fetchMaterial<T extends Material = MeshMaterial>(id: string, options?: { overrideVFS?: VFS }) {\n const material = await this._assetManager.fetchMaterial<T>(id, options);\n if (material) {\n this._allocated.set(material, id);\n }\n return material;\n }\n /**\n * Reload specific blue print materials\n *\n * @param filter - Determine whether a blue print material should reload.\n *\n */\n async reloadBluePrintMaterials(filter?: (m: PBRBluePrintMaterial) => boolean) {\n await this._assetManager.reloadBluePrintMaterials(filter);\n }\n /**\n * Mark specific blue print as changed\n * @param path - BluePrint file path\n */\n invalidateBluePrint(path: string) {\n this._assetManager.invalidateBluePrint(path);\n }\n /**\n * Register a model loader by MIME type.\n */\n setModelLoader(mimeType: string, loader: ModelLoader) {\n this._assetManager.setModelLoader(mimeType, loader);\n }\n /**\n * Load a primitive by ID and track the allocation for reverse lookup.\n *\n * @param id - Primitive identifier or path.\n *\n * @returns A Promise resolving to the loaded primitive, or `null` if failed.\n */\n async fetchPrimitive<T extends Primitive = Primitive>(id: string, options?: { overrideVFS?: VFS }) {\n const primitive = await this._assetManager.fetchPrimitive<T>(id, options);\n if (primitive) {\n this._allocated.set(primitive, id);\n }\n return primitive;\n }\n /**\n * Load a font asset by path and track the allocation for reverse lookup.\n */\n async fetchFontAsset(path: string, options?: FontAssetFetchOptions) {\n const id = this.VFS.normalizePath(path);\n const fontAsset = await this._assetManager.fetchFontAsset(id, options);\n if (fontAsset) {\n this._allocated.set(fontAsset, id);\n }\n return fontAsset;\n }\n /**\n * Returns the cached font asset if it is already loaded.\n */\n getFontAsset(path: string) {\n return this._assetManager.getFontAsset(this.VFS.normalizePath(path));\n }\n /**\n * Releases a cached font asset.\n */\n releaseFontAsset(asset: unknown | string) {\n const path = typeof asset === 'string' ? asset : this.getAssetId(asset);\n return path ? this._assetManager.releaseFontAsset(this.VFS.normalizePath(path)) : false;\n }\n /**\n * Load a prefab content.\n * @param path - Path to the prefab JSON file in VFS.\n * @returns A Promise resolving to the prefab json object, or `null` on failure.\n */\n async loadPrefabContent(path: string): Promise<Nullable<{ type: string; data: object }>> {\n try {\n const content = (await this._vfs.readFile(path, { encoding: 'utf8' })) as string;\n const json = JSON.parse(content) as { type: string; data: object };\n return json;\n } catch (err) {\n console.error(`Failed to load prefab from ${path}:`, err);\n return null;\n }\n }\n /**\n * Instantiate a prefab from a JSON file via VFS.\n * @param parent - Parent node to attach the instantiated prefab to.\n * @param path - Path to the prefab JSON file in VFS.\n * @returns A Promise resolving to the instantiated `SceneNode`, or `null` on failure.\n */\n async instantiatePrefab(parent: SceneNode, path: string): Promise<Nullable<SceneNode>> {\n try {\n const json = await this.loadPrefabContent(path);\n ASSERT(json?.type === 'SceneNode', 'Invalid prefab format');\n const tmpNode = new DRef(new SceneNode(parent.scene));\n tmpNode.get()!.remove();\n tmpNode.get()!.prefabId = this._vfs.normalizePath(path);\n const node = (await this.deserializeObject<SceneNode>(\n tmpNode.get(),\n json['data'] as Record<string, unknown>\n ))!;\n node.prefabId = tmpNode.get()!.prefabId;\n node.parent = parent;\n node.persistentId = randomUUID();\n tmpNode.dispose();\n return node;\n } catch (err) {\n console.error(`Failed to instantiate prefab from ${path}:`, err);\n return null;\n }\n }\n /**\n * Load a scene from a JSON file via VFS.\n *\n * @remarks\n * - Deserializes the scene graph.\n * - Attaches scripts referenced by nodes after load (asynchronous).\n *\n * @param filename - Path to the scene JSON file in VFS.\n *\n * @returns A Promise resolving to the loaded `Scene`.\n */\n async loadScene(filename: string): Promise<Nullable<Scene>> {\n const content = (await this._vfs.readFile(filename, { encoding: 'utf8' })) as string;\n const json = JSON.parse(content);\n return await this.deserializeObject<Scene>(null, json);\n }\n /**\n * Save a scene to a JSON file via VFS.\n *\n * @remarks\n * - Collects async export tasks for embedded resources and awaits them.\n * - Writes a UTF-8 JSON representation to VFS.\n *\n * @param scene - Scene to serialize and save.\n * @param filename - Destination path in VFS.\n */\n async saveScene(scene: Scene, filename: string): Promise<void> {\n const asyncTasks: Promise<unknown>[] = [];\n const content = await this.serializeObject(scene, null, asyncTasks);\n await Promise.all(asyncTasks);\n await this._vfs.writeFile(filename, JSON.stringify(content, null, 2), {\n encoding: 'utf8',\n create: true\n });\n }\n private rebuildGraphStructure(\n nodes: Record<number, IGraphNode>,\n links: { startNodeId: number; startSlotId: number; endNodeId: number; endSlotId: number }[]\n ): GraphStructure {\n const gs: GraphStructure = {\n outgoing: {},\n incoming: {}\n };\n // Initialize adjacency lists\n for (const nodeId in nodes) {\n gs.outgoing[nodeId] = [];\n gs.incoming[nodeId] = [];\n }\n // Fill with links\n for (const link of links) {\n const outConnection: NodeConnection = {\n targetNodeId: link.endNodeId,\n startSlotId: link.startSlotId,\n endSlotId: link.endSlotId\n };\n\n const inConnection: NodeConnection = {\n targetNodeId: link.startNodeId,\n startSlotId: link.startSlotId,\n endSlotId: link.endSlotId\n };\n\n gs.outgoing[link.startNodeId]?.push(outConnection);\n gs.incoming[link.endNodeId]?.push(inConnection);\n }\n return gs;\n }\n private collectReachableBackward(\n gs: GraphStructure,\n nodes: Record<number, IGraphNode>,\n roots: number[]\n ): Set<number> {\n const reachable = new Set<number>();\n const q: number[] = [];\n\n for (const r of roots) {\n if (nodes[r]) {\n reachable.add(r);\n q.push(r);\n }\n }\n while (q.length > 0) {\n const u = q.shift()!;\n const ins = gs.incoming[u] || [];\n for (const conn of ins) {\n const v = conn.targetNodeId; // 前驱\n if (!reachable.has(v)) {\n reachable.add(v);\n q.push(v);\n }\n }\n }\n return reachable;\n }\n private getReverseTopologicalOrderFromRoots(\n gs: GraphStructure,\n nodes: Record<number, IGraphNode>,\n roots: number[]\n ): Nullable<{\n order: number[];\n levels: number[][];\n }> {\n if (!roots || roots.length === 0) {\n return { order: [], levels: [] };\n }\n const sub = this.collectReachableBackward(gs, nodes, roots);\n if (sub.size === 0) {\n return { order: [], levels: [] };\n }\n const outDegree = new Map<number, number>();\n for (const id of sub) {\n const outs = (gs.outgoing[id] || []).filter((c) => sub.has(c.targetNodeId));\n outDegree.set(id, outs.length);\n }\n let currentLevel = Array.from(outDegree.entries())\n .filter(([, deg]) => deg === 0)\n .map(([id]) => id);\n const result: number[] = [];\n const levels: number[][] = [];\n while (currentLevel.length > 0) {\n levels.push([...currentLevel]);\n result.push(...currentLevel);\n const nextLevel: number[] = [];\n for (const u of currentLevel) {\n const ins = gs.incoming[u] || [];\n for (const conn of ins) {\n const v = conn.targetNodeId; // 前驱\n if (!sub.has(v)) {\n continue;\n }\n const deg = outDegree.get(v)! - 1;\n outDegree.set(v, deg);\n if (deg === 0) {\n nextLevel.push(v);\n }\n }\n }\n currentLevel = nextLevel;\n }\n if (result.length !== sub.size) {\n console.warn('Subgraph contains cycles (from given roots).');\n return null;\n }\n return { order: result, levels };\n }\n createBluePrintDAG(\n nodeMap: Record<number, IGraphNode>,\n roots: number[],\n links: { startNodeId: number; startSlotId: number; endNodeId: number; endSlotId: number }[]\n ): BlueprintDAG {\n const gs = this.rebuildGraphStructure(nodeMap, links);\n for (const k in gs.incoming) {\n const node = nodeMap[k];\n for (const conn of gs.incoming[k]) {\n const input = node.inputs.find((input) => input.id === conn.endSlotId)!;\n input.inputNode = nodeMap[conn.targetNodeId];\n input.inputId = conn.startSlotId;\n }\n }\n return {\n graph: gs,\n nodeMap,\n roots,\n order: this.getReverseTopologicalOrderFromRoots(gs, nodeMap, roots)!.order.reverse()\n };\n }\n async loadBluePrint(path: string) {\n return this._assetManager.loadBluePrint(path);\n }\n /**\n * Clear cached allocations and asset-manager caches.\n *\n * @remarks\n * Useful when reloading content or changing VFS mounts.\n */\n clearCache() {\n this._allocated = new WeakMap();\n this._assetManager.clearCache();\n }\n private static readonly _pathPattern = /^([^\\][]+)(?:\\[(\\d+)\\])?$/;\n private static parsePropertyPath(str: string) {\n const match = str.match(this._pathPattern);\n if (match) {\n return {\n original: match[0],\n prefix: match[1],\n index: match[2] || null,\n indexValue: match[2] ? parseInt(match[2], 10) : null,\n hasIndex: !!match[2]\n };\n }\n return null;\n }\n /**\n * Find the object targeted by an animation track starting from a node.\n *\n * @remarks\n * - Parses a target path like `prop/subprop[0]/child` where indexed entries\n * require `object_array` type and non-indexed entries require `object` type.\n * - Returns `null` if any segment cannot be resolved through registered metadata.\n *\n * @param node - Root node used as the starting point.\n * @param track - Property track containing a target path.\n *\n * @returns The resolved target object, or `null` if not found.\n */\n findAnimationTarget(node: SceneNode, track: PropertyTrack) {\n const target = track.target ?? '';\n const value: RequireOptionals<PropertyValue> = { num: [], bool: [], str: [], object: [] };\n const parts = target.split('/').filter((val) => !!val);\n let targetObj: Nullable<object> = node;\n while (parts.length > 0) {\n const propName = parts.shift()!;\n const info = ResourceManager.parsePropertyPath(propName);\n if (!info) {\n return null;\n }\n const cls = this.getClassByConstructor(targetObj.constructor as GenericConstructor);\n if (!cls) {\n return null;\n }\n const prop = this.getPropertyByClass(cls, info.prefix);\n if (!prop) {\n return null;\n }\n if (info.hasIndex) {\n if (prop.type !== 'object_array') {\n return null;\n }\n prop.get.call(targetObj, value);\n targetObj = value.object?.[info.indexValue!] ?? null;\n } else {\n if (prop.type !== 'object') {\n return null;\n }\n prop.get.call(targetObj, value);\n targetObj = value.object?.[0] ?? null;\n }\n if (!targetObj) {\n return null;\n }\n }\n return targetObj;\n }\n /** @internal */\n private registerProps(cls: SerializableClass) {\n if (!this._clsPropMap.get(cls)) {\n const props = cls.getProps() ?? [];\n this._clsPropMap.set(cls, props);\n for (const prop of props) {\n const path = `/${cls.name}/${prop.name}`;\n if (this._propMap[path]) {\n throw new Error(`Cannot register property ${path}: property name already exists`);\n }\n this._propMap[path] = prop;\n this._propNameMap.set(prop, path);\n }\n }\n }\n private getDefaultValue<T>(obj: T, prop: PropertyAccessor<T>) {\n let v = prop.getDefaultValue?.call(obj) ?? prop.default;\n if (v === undefined) {\n v = defaultValues[prop.type];\n }\n return v;\n }\n private isSerializedObjectEnvelope(v: unknown): v is Record<string, unknown> {\n return (\n !!v &&\n typeof v === 'object' &&\n !Array.isArray(v) &&\n typeof (v as Record<string, unknown>).ClassName === 'string'\n );\n }\n private async deserializeObjectPropsForCls<T extends object>(\n obj: T,\n cls: SerializableClass,\n json: Record<string, unknown>\n ) {\n const props = (this.getPropertiesByClass(cls) ?? []).sort((a, b) => (a.phase ?? 0) - (b.phase ?? 0));\n let currentPhase: number | undefined = undefined;\n const promises: Promise<void>[] = [];\n for (const prop of props) {\n const phase = prop.phase ?? 0;\n if (phase !== currentPhase) {\n currentPhase = phase;\n if (promises.length > 0) {\n await Promise.all(promises);\n }\n }\n if (prop.type === 'command') {\n continue;\n }\n if (!prop.set) {\n continue;\n }\n if (prop.isValid && !prop.isValid.call(obj)) {\n continue;\n }\n const persistent = prop.isPersistent?.call(obj) ?? true;\n if (!persistent) {\n continue;\n }\n const k = prop.name;\n const v = json[k] ?? this.getDefaultValue(obj, prop);\n const tmpVal: RequireOptionals<PropertyValue> = {\n num: [0, 0, 0, 0],\n str: [''],\n bool: [false],\n object: [null]\n };\n switch (prop.type) {\n case 'object':\n if (typeof v === 'string' && v) {\n tmpVal.str[0] = v;\n } else {\n tmpVal.object[0] = v\n ? Array.isArray(v)\n ? v\n : this.isSerializedObjectEnvelope(v)\n ? ((await this.deserializeObject<any>(obj, v)) ?? null)\n : v\n : null;\n }\n break;\n case 'object_array':\n tmpVal.object = [];\n if (Array.isArray(v)) {\n for (const p of v) {\n if (typeof p === 'string' && p) {\n tmpVal.str[0] = p;\n } else {\n tmpVal.object.push(\n p\n ? this.isSerializedObjectEnvelope(p)\n ? ((await this.deserializeObject<any>(obj, p)) ?? null)\n : p\n : null\n );\n }\n }\n }\n break;\n case 'embedded':\n if (typeof v === 'string' && v) {\n tmpVal.str[0] = v;\n }\n break;\n case 'float':\n case 'int':\n tmpVal.num[0] = v;\n break;\n case 'string':\n tmpVal.str[0] = v;\n break;\n case 'bool':\n tmpVal.bool[0] = v;\n break;\n case 'vec2':\n case 'int2':\n tmpVal.num[0] = v[0];\n tmpVal.num[1] = v[1];\n break;\n case 'vec3':\n case 'int3':\n case 'rgb':\n tmpVal.num[0] = v[0];\n tmpVal.num[1] = v[1];\n tmpVal.num[2] = v[2];\n break;\n case 'vec4':\n case 'int4':\n case 'rgba':\n tmpVal.num[0] = v[0];\n tmpVal.num[1] = v[1];\n tmpVal.num[2] = v[2];\n tmpVal.num[3] = v[3];\n break;\n }\n promises.push(Promise.resolve(prop.set.call(obj, tmpVal, -1)));\n }\n if (promises.length > 0) {\n await Promise.all(promises);\n }\n }\n private async serializeObjectPropsForCls<T extends object>(\n obj: T,\n cls: SerializableClass,\n json: Record<string, unknown>,\n asyncTasks?: Nullable<Promise<unknown>[]>\n ) {\n const props = this.getPropertiesByClass(cls) ?? [];\n for (const prop of props) {\n if (prop.isValid && !prop.isValid.call(obj)) {\n continue;\n }\n if (prop.type === 'command') {\n continue;\n }\n const persistent = prop.isPersistent?.call(obj) ?? true;\n if (!persistent) {\n continue;\n }\n const tmpVal: RequireOptionals<PropertyValue> = {\n num: [0, 0, 0, 0],\n str: [''],\n bool: [false],\n object: [null]\n };\n const k = prop.name;\n prop.get.call(obj, tmpVal);\n switch (prop.type) {\n case 'object': {\n const value =\n typeof tmpVal.str[0] === 'string' && tmpVal.str[0]\n ? tmpVal.str[0]\n : tmpVal.object[0]\n ? Array.isArray(tmpVal.object[0])\n ? tmpVal.object[0]\n : await this.serializeObject(tmpVal.object[0], {}, asyncTasks)\n : null;\n if (value) {\n json[k] = value;\n }\n break;\n }\n case 'object_array':\n if (tmpVal.object.length > 0) {\n const arr: unknown[] = [];\n for (const p of tmpVal.object) {\n arr.push(await this.serializeObject(p, {}, asyncTasks));\n }\n json[k] = arr;\n }\n break;\n case 'embedded': {\n const relativePath = tmpVal.str[0].startsWith('/') ? tmpVal.str[0].slice(1) : tmpVal.str[0];\n json[k] = relativePath;\n if (asyncTasks) {\n const resource = tmpVal.object[0];\n asyncTasks.push(\n (async () => {\n const buffer = (await resource) as ArrayBuffer;\n await this.VFS.writeFile(relativePath, buffer, {\n encoding: 'binary',\n create: true\n });\n })()\n );\n }\n break;\n }\n case 'float':\n case 'int':\n if (\n (prop.default === undefined && !prop.getDefaultValue) ||\n this.getDefaultValue(obj, prop) !== tmpVal.num[0]\n ) {\n json[k] = tmpVal.num[0];\n }\n break;\n case 'string':\n if (\n (prop.default === undefined && !prop.getDefaultValue) ||\n this.getDefaultValue(obj, prop) !== tmpVal.str[0]\n ) {\n json[k] = tmpVal.str[0];\n }\n break;\n case 'bool':\n if (\n (prop.default === undefined && !prop.getDefaultValue) ||\n this.getDefaultValue(obj, prop) !== tmpVal.bool[0]\n ) {\n json[k] = tmpVal.bool[0];\n }\n break;\n case 'vec2':\n case 'int2':\n if (prop.default !== undefined || !!prop.getDefaultValue) {\n const v = this.getDefaultValue(obj, prop);\n if (v[0] === tmpVal.num[0] && v[1] === tmpVal.num[1]) {\n break;\n }\n }\n json[k] = [tmpVal.num[0], tmpVal.num[1]];\n break;\n case 'vec3':\n case 'int3':\n case 'rgb':\n if (prop.default !== undefined || !!prop.getDefaultValue) {\n const v = this.getDefaultValue(obj, prop);\n if (v[0] === tmpVal.num[0] && v[1] === tmpVal.num[1] && v[2] === tmpVal.num[2]) {\n break;\n }\n }\n json[k] = [tmpVal.num[0], tmpVal.num[1], tmpVal.num[2]];\n break;\n case 'vec4':\n case 'int4':\n case 'rgba':\n if (prop.default !== undefined || !!prop.getDefaultValue) {\n const v = this.getDefaultValue(obj, prop);\n if (\n v[0] === tmpVal.num[0] &&\n v[1] === tmpVal.num[1] &&\n v[2] === tmpVal.num[2] &&\n v[3] === tmpVal.num[3]\n ) {\n break;\n }\n }\n json[k] = [tmpVal.num[0], tmpVal.num[1], tmpVal.num[2], tmpVal.num[3]];\n break;\n }\n }\n }\n}\n"],"names":["defaultValues","bool","float","int","int2","int3","int4","object","object_array","embedded","rgb","rgba","string","vec2","vec3","vec4","command","ResourceManager","_classMap","_vfs","_propMap","_propNameMap","_clsPropMap","_assetManager","_editorMode","_allocated","vfs","editorMode","WeakMap","AssetManager","Map","getJSONPropClass","getJSONNumberClass","getJSONStringClass","getJSONBoolClass","getJSONObjectClass","getJSONArrayClass","getScriptAttachmentClass","getAABBClass","getInterpolatorClass","getSkeletonClass","getSkeletonRigClass","getSkinBindingClass","getJointDynamicsModifierClass","getAnimationClass","getPropTrackClass","getNodeRotationTrackClass","getNodeScaleTrackClass","getNodeTranslationTrackClass","getNodeEulerRotationTrackClass","getFixedGeometryCacheTrackClass","getPCAGeometryCacheTrackClass","getMorphTrackClass","getSceneNodeClass","getGraphNodeClass","getMeshClass","getSpriteClass","getTextSpriteClass","getMSDFTextSpriteClass","getMSDFTextClass","getWaterClass","getTerrainClass","getFFTWaveGeneratorClass","getFBMWaveGeneratorClass","getParticleNodeClass","getPunctualLightClass","getDirectionalLightClass","getSpotLightClass","getPointLightClass","getRectLightClass","getCameraClass","getPerspectiveCameraClass","getOrthoCameraClass","getBatchGroupClass","getSceneClass","getSubsurfaceProfileClass","getMeshMaterialClass","getPBRBluePrintMaterialClass","getSpriteBlueprintMaterialClass","getUnlitMaterialClass","getMToonMaterialClass","getLambertMaterialClass","getBlinnMaterialClass","getPBRMetallicRoughnessMaterialClass","getPBRSpecularGlossinessMaterialClass","getParticleMaterialClass","getSpriteMaterialClass","getStandardSpriteMaterialClass","getBoxShapeClass","getBoxFrameShapeClass","getCapsuleShapeClass","getSphereShapeClass","getTorusShapeClass","getCylinderShapeClass","getPlaneShapeClass","getTetrahedronShapeClass","ConstantScalarNode","getSerializationCls","ConstantVec2Node","ConstantVec3Node","ConstantVec4Node","ConstantBooleanNode","ConstantBVec2Node","ConstantBVec3Node","ConstantBVec4Node","ConstantTexture2DNode","ConstantTexture2DArrayNode","ConstantTextureCubeNode","MakeVectorNode","SwizzleNode","EqualNode","NotEqualNode","LogicallyAndNode","LogicallyOrNode","CompComparisonNode","AnyConditionNode","AllConditionNode","SelectionNode","Degrees2RadiansNode","Radians2DegreesNode","SinNode","CosNode","TanNode","ArcSinNode","ArcCosNode","ArcTanNode","ArcTan2Node","SinHNode","CosHNode","TanHNode","ArcsineHNode","ArccosineHNode","ArctangentHNode","ExpNode","Exp2Node","LogNode","Log2Node","SqrtNode","InvSqrtNode","AbsNode","SignNode","FloorNode","CeilNode","FractNode","DDXNode","DDYNode","FWidthNode","CompAddNode","CompSubNode","CompMulNode","CompDivNode","ModNode","MinNode","MaxNode","PowNode","StepNode","SmoothStepNode","FmaNode","ClampNode","SaturateNode","MixNode","NormalizeNode","TransformNode","RotateAboutAxisNode","FaceForwardNode","ReflectNode","RefractNode","LengthNode","DistanceNode","DotProductNode","CrossProductNode","Hash1Node","Hash2Node","Hash3Node","SimplexNoise2DNode","PerlinNoise2DNode","VertexColorNode","VertexUVNode","VertexPositionNode","PixelWorldPositionNode","VertexNormalNode","PixelNormalNode","VertexTangentNode","VertexBinormalNode","ViewMatrixNode","ProjectionMatrixNode","ViewProjMatrixNode","InvProjMatrixNode","InvViewProjMatrixNode","BillboardMatrixNode","CameraPositionNode","CameraVectorNode","CameraNearFarNode","SkyEnvTextureNode","ElapsedTimeNode","PBRBlockNode","SpriteBlockNode","VertexBlockNode","ResolveVertexPositionNode","ResolveVertexTangentNode","ResolveVertexNormalNode","FunctionInputNode","FunctionOutputNode","FunctionCallNode","PannerNode","TextureSampleNode","VertexOutputNode","VertexIndexNode","InstanceIndexNode","map","val","ctor","k","registerProps","VFS","assetManager","getClasses","values","getClassByConstructor","get","getClassByObject","obj","getClassByName","className","name","getClassByProperty","prop","indexOf","getPropertiesByClass","cls","getAllPropertiesByClass","props","current","unshift","parent","getPropertyByClass","find","value","getPropertyByName","getPropertyName","registerClass","has","set","getAssetId","asset","setAssetId","id","delete","fetchBinary","data","fetchBinaryData","serializeObject","json","asyncTasks","undefined","index","findIndex","Error","info","flags","saveProps","initParams","getInitParams","ClassName","Object","Init","serializeObjectProps","serializeObjectPropsForCls","deserializeObject","ctx","String","p","loadProps","createFunc","result","Promise","deserializeObjectProps","deserializeObjectPropsForCls","fetchModel","path","scene","options","normalizePath","model","prefabId","loadTextureFromBuffer","arrayBuffer","mimeType","srgb","samplerOptions","texture","fetchTexture","fetchMaterial","material","reloadBluePrintMaterials","filter","invalidateBluePrint","setModelLoader","loader","fetchPrimitive","primitive","fetchFontAsset","fontAsset","getFontAsset","releaseFontAsset","loadPrefabContent","content","readFile","encoding","JSON","parse","err","console","error","instantiatePrefab","ASSERT","type","tmpNode","DRef","SceneNode","remove","node","persistentId","randomUUID","dispose","loadScene","filename","saveScene","all","writeFile","stringify","create","rebuildGraphStructure","nodes","links","gs","outgoing","incoming","nodeId","link","outConnection","targetNodeId","endNodeId","startSlotId","endSlotId","inConnection","startNodeId","push","collectReachableBackward","roots","reachable","Set","q","r","add","length","u","shift","ins","conn","v","getReverseTopologicalOrderFromRoots","order","levels","sub","size","outDegree","outs","c","currentLevel","Array","from","entries","deg","nextLevel","warn","createBluePrintDAG","nodeMap","input","inputs","inputNode","inputId","graph","reverse","loadBluePrint","clearCache","_pathPattern","parsePropertyPath","str","match","original","prefix","indexValue","parseInt","hasIndex","findAnimationTarget","track","target","num","parts","split","targetObj","propName","call","getProps","getDefaultValue","default","isSerializedObjectEnvelope","isArray","sort","a","b","phase","currentPhase","promises","isValid","persistent","isPersistent","tmpVal","resolve","arr","relativePath","startsWith","slice","resource","buffer"],"mappings":"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"}
@@ -26,17 +26,19 @@ import '../../../material/lambert.js';
26
26
  import '../../../material/blinn.js';
27
27
  import '../../../material/unlit.js';
28
28
  import '../../../material/particle.js';
29
+ import '../../../material/subsurfaceprofile.js';
29
30
  import '../../../material/meshmaterial.js';
30
31
  import '../../../material/grassmaterial.js';
31
32
  import '../../../material/terrain-cm.js';
32
33
  import '../../../material/pbrmr.js';
33
34
  import '../../../material/pbrsg.js';
35
+ import '../../../material/mtoon.js';
34
36
  import '../../../material/pbrblueprint.js';
35
37
  import '../../../material/sprite.js';
36
38
  import '../../../material/sprite_std.js';
37
- import '../../../material/msdf_text.js';
38
39
  import '../../blueprint/material/texture.js';
39
40
  import '../../../render/rendergraph/forward_plus_builder.js';
41
+ import '../../../render/lightpass.js';
40
42
  import '../../../render/sky.js';
41
43
  import '../../../render/clipmap.js';
42
44
  import '../../../shaders/atmosphere.js';
@@ -45,6 +47,7 @@ import '../../../shadow/shadowmapper.js';
45
47
  import '../../../scene/mesh.js';
46
48
  import '../../../scene/basesprite.js';
47
49
  import '../../../scene/meshdrawable.js';
50
+ import '../../../material/msdf_text.js';
48
51
  import '../../../scene/water.js';
49
52
  import '../../../scene/particlesys.js';
50
53
  import '../../../scene/batchgroup.js';
@@ -557,7 +560,7 @@ function createJointDynamicsCurveProp(name, key, label, description) {
557
560
  createJointDynamicsVectorProp('WindForce', 'windForce', 'Wind Force', 'Global wind force vector'),
558
561
  createJointDynamicsNumberProp('Relaxation', 'relaxation', 'Relaxation', 'Constraint relaxation iterations per substep', 'int', 0),
559
562
  createJointDynamicsNumberProp('SubSteps', 'subSteps', 'Sub Steps', 'Simulation substeps per frame', 'int', 1),
560
- createJointDynamicsNumberProp('RootSlideLimit', 'rootSlideLimit', 'Root Slide Limit', 'Maximum root slide distance per substep. -1 means unlimited', 'float'),
563
+ createJointDynamicsNumberProp('RootSlideLimit', 'rootSlideLimit', 'Root Slide Limit', 'Maximum system-local root movement left as relative physics lag after large root motion. -1 means unlimited', 'float'),
561
564
  createJointDynamicsNumberProp('RootRotateLimit', 'rootRotateLimit', 'Root Rotate Limit', 'Maximum root rotation angle per substep. -1 means unlimited', 'float'),
562
565
  createJointDynamicsNumberProp('ConstraintShrinkLimit', 'constraintShrinkLimit', 'Shrink Limit', 'Upper limit for horizontal and shear constraint shrink power', 'float', 0),
563
566
  createJointDynamicsNumberProp('StabilizationFrameRate', 'stabilizationFrameRate', 'Stabilization FPS', 'Target frame rate used by stabilization logic', 'float', 0),