@zephyr3d/scene 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/dist/animation/animation.js +4 -33
  2. package/dist/animation/animation.js.map +1 -1
  3. package/dist/animation/animationset.js +24 -11
  4. package/dist/animation/animationset.js.map +1 -1
  5. package/dist/animation/animationtrack.js +1 -0
  6. package/dist/animation/animationtrack.js.map +1 -1
  7. package/dist/animation/eulerrotationtrack.js +0 -1
  8. package/dist/animation/eulerrotationtrack.js.map +1 -1
  9. package/dist/animation/ik/ccd_solver.js +372 -0
  10. package/dist/animation/ik/ccd_solver.js.map +1 -0
  11. package/dist/animation/ik/fabrik_solver.js +399 -0
  12. package/dist/animation/ik/fabrik_solver.js.map +1 -0
  13. package/dist/animation/ik/ik_angle_constraint.js +181 -0
  14. package/dist/animation/ik/ik_angle_constraint.js.map +1 -0
  15. package/dist/animation/ik/ik_chain.js +163 -0
  16. package/dist/animation/ik/ik_chain.js.map +1 -0
  17. package/dist/animation/ik/ik_chain_builder.js +68 -0
  18. package/dist/animation/ik/ik_chain_builder.js.map +1 -0
  19. package/dist/animation/ik/ik_constraint.js +25 -0
  20. package/dist/animation/ik/ik_constraint.js.map +1 -0
  21. package/dist/animation/ik/ik_pole_constraint.js +123 -0
  22. package/dist/animation/ik/ik_pole_constraint.js.map +1 -0
  23. package/dist/animation/ik/ik_solver.js +48 -0
  24. package/dist/animation/ik/ik_solver.js.map +1 -0
  25. package/dist/animation/ik/ik_track.js +96 -0
  26. package/dist/animation/ik/ik_track.js.map +1 -0
  27. package/dist/animation/ik/ik_utils.js +270 -0
  28. package/dist/animation/ik/ik_utils.js.map +1 -0
  29. package/dist/animation/ik/two_bone_ik_solver.js +332 -0
  30. package/dist/animation/ik/two_bone_ik_solver.js.map +1 -0
  31. package/dist/animation/ik_modifier.js +61 -0
  32. package/dist/animation/ik_modifier.js.map +1 -0
  33. package/dist/animation/ik_postprocessor.js +71 -0
  34. package/dist/animation/ik_postprocessor.js.map +1 -0
  35. package/dist/animation/manual_transform_processor.js +156 -0
  36. package/dist/animation/manual_transform_processor.js.map +1 -0
  37. package/dist/animation/morphtarget.js +7 -1
  38. package/dist/animation/morphtarget.js.map +1 -1
  39. package/dist/animation/morphtrack.js +3 -3
  40. package/dist/animation/morphtrack.js.map +1 -1
  41. package/dist/animation/proptrack.js +37 -41
  42. package/dist/animation/proptrack.js.map +1 -1
  43. package/dist/animation/rotationtrack.js +0 -1
  44. package/dist/animation/rotationtrack.js.map +1 -1
  45. package/dist/animation/scaletrack.js +0 -1
  46. package/dist/animation/scaletrack.js.map +1 -1
  47. package/dist/animation/skeleton.js +57 -60
  48. package/dist/animation/skeleton.js.map +1 -1
  49. package/dist/animation/skeleton_modifier.js +38 -0
  50. package/dist/animation/skeleton_modifier.js.map +1 -0
  51. package/dist/animation/skeleton_postprocessor.js +50 -0
  52. package/dist/animation/skeleton_postprocessor.js.map +1 -0
  53. package/dist/animation/spring/multi_chain_spring_system.js +503 -0
  54. package/dist/animation/spring/multi_chain_spring_system.js.map +1 -0
  55. package/dist/animation/spring/spring_chain.js +103 -0
  56. package/dist/animation/spring/spring_chain.js.map +1 -0
  57. package/dist/animation/spring/spring_collider.js +247 -0
  58. package/dist/animation/spring/spring_collider.js.map +1 -0
  59. package/dist/animation/spring/spring_constraint.js +21 -0
  60. package/dist/animation/spring/spring_constraint.js.map +1 -0
  61. package/dist/animation/spring/spring_particle.js +20 -0
  62. package/dist/animation/spring/spring_particle.js.map +1 -0
  63. package/dist/animation/spring/spring_system.js +526 -0
  64. package/dist/animation/spring/spring_system.js.map +1 -0
  65. package/dist/animation/spring_modifier.js +45 -0
  66. package/dist/animation/spring_modifier.js.map +1 -0
  67. package/dist/animation/spring_postprocessor.js +54 -0
  68. package/dist/animation/spring_postprocessor.js.map +1 -0
  69. package/dist/animation/translationtrack.js +0 -1
  70. package/dist/animation/translationtrack.js.map +1 -1
  71. package/dist/app/api.js +13 -4
  72. package/dist/app/api.js.map +1 -1
  73. package/dist/app/app.js +13 -1
  74. package/dist/app/app.js.map +1 -1
  75. package/dist/app/engine.js +33 -45
  76. package/dist/app/engine.js.map +1 -1
  77. package/dist/app/inputmgr.js.map +1 -1
  78. package/dist/app/runtimescript.js.map +1 -1
  79. package/dist/app/screen.js +318 -0
  80. package/dist/app/screen.js.map +1 -0
  81. package/dist/app/scriptingsystem.js +10 -6
  82. package/dist/app/scriptingsystem.js.map +1 -1
  83. package/dist/app/scriptregistry.js +11 -22
  84. package/dist/app/scriptregistry.js.map +1 -1
  85. package/dist/asset/assetmanager.js +79 -58
  86. package/dist/asset/assetmanager.js.map +1 -1
  87. package/dist/asset/builtin.js +5 -5
  88. package/dist/asset/builtin.js.map +1 -1
  89. package/dist/asset/loaders/dds/dds.js +6 -2
  90. package/dist/asset/loaders/dds/dds.js.map +1 -1
  91. package/dist/asset/loaders/dds/dds_loader.js +1 -1
  92. package/dist/asset/loaders/dds/dds_loader.js.map +1 -1
  93. package/dist/asset/loaders/gltf/gltf_loader.js +14 -6
  94. package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
  95. package/dist/asset/loaders/gltf/helpers.js +6 -2
  96. package/dist/asset/loaders/gltf/helpers.js.map +1 -1
  97. package/dist/asset/loaders/hdr/hdr.js +22 -15
  98. package/dist/asset/loaders/hdr/hdr.js.map +1 -1
  99. package/dist/asset/loaders/image/tga_Loader.js +2 -1
  100. package/dist/asset/loaders/image/tga_Loader.js.map +1 -1
  101. package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
  102. package/dist/asset/loaders/loader.js +2 -2
  103. package/dist/asset/loaders/loader.js.map +1 -1
  104. package/dist/asset/model.js +9 -5
  105. package/dist/asset/model.js.map +1 -1
  106. package/dist/blitter/bilateralblur.js.map +1 -1
  107. package/dist/blitter/blitter.js +9 -11
  108. package/dist/blitter/blitter.js.map +1 -1
  109. package/dist/blitter/box.js +0 -1
  110. package/dist/blitter/box.js.map +1 -1
  111. package/dist/blitter/copy.js.map +1 -1
  112. package/dist/blitter/gaussianblur.js.map +1 -1
  113. package/dist/camera/base.js +1 -3
  114. package/dist/camera/base.js.map +1 -1
  115. package/dist/camera/camera.js +121 -37
  116. package/dist/camera/camera.js.map +1 -1
  117. package/dist/camera/fps.js +19 -17
  118. package/dist/camera/fps.js.map +1 -1
  119. package/dist/camera/orbit.js +45 -43
  120. package/dist/camera/orbit.js.map +1 -1
  121. package/dist/camera/orthocamera.js +27 -21
  122. package/dist/camera/orthocamera.js.map +1 -1
  123. package/dist/camera/perspectivecamera.js +28 -19
  124. package/dist/camera/perspectivecamera.js.map +1 -1
  125. package/dist/index.d.ts +15802 -15577
  126. package/dist/index.js +33 -11
  127. package/dist/index.js.map +1 -1
  128. package/dist/material/blinn.js.map +1 -1
  129. package/dist/material/grassmaterial.js.map +1 -1
  130. package/dist/material/lambert.js.map +1 -1
  131. package/dist/material/material.js +11 -5
  132. package/dist/material/material.js.map +1 -1
  133. package/dist/material/meshmaterial.js +10 -9
  134. package/dist/material/meshmaterial.js.map +1 -1
  135. package/dist/material/mixins/albedocolor.js.map +1 -1
  136. package/dist/material/mixins/foliage.js.map +1 -1
  137. package/dist/material/mixins/lightmodel/blinnphong.js +66 -4
  138. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  139. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  140. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +7 -0
  141. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  142. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  143. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  144. package/dist/material/mixins/lit.js +3 -3
  145. package/dist/material/mixins/lit.js.map +1 -1
  146. package/dist/material/mixins/pbr/brdf.js.map +1 -1
  147. package/dist/material/mixins/pbr/common.js.map +1 -1
  148. package/dist/material/mixins/texture.js +3 -0
  149. package/dist/material/mixins/texture.js.map +1 -1
  150. package/dist/material/mixins/vertexcolor.js.map +1 -1
  151. package/dist/material/particle.js.map +1 -1
  152. package/dist/material/pbrblueprint.js +180 -22
  153. package/dist/material/pbrblueprint.js.map +1 -1
  154. package/dist/material/pbrmr.js.map +1 -1
  155. package/dist/material/pbrsg.js.map +1 -1
  156. package/dist/material/shader/helper.js +41 -56
  157. package/dist/material/shader/helper.js.map +1 -1
  158. package/dist/material/sprite.js +301 -0
  159. package/dist/material/sprite.js.map +1 -0
  160. package/dist/material/sprite3d.js +301 -0
  161. package/dist/material/sprite3d.js.map +1 -0
  162. package/dist/material/sprite3d_std.js +116 -0
  163. package/dist/material/sprite3d_std.js.map +1 -0
  164. package/dist/material/sprite3dblueprint.js +235 -0
  165. package/dist/material/sprite3dblueprint.js.map +1 -0
  166. package/dist/material/sprite_std.js +116 -0
  167. package/dist/material/sprite_std.js.map +1 -0
  168. package/dist/material/spriteblueprint.js +235 -0
  169. package/dist/material/spriteblueprint.js.map +1 -0
  170. package/dist/material/terrain-cm.js +0 -1
  171. package/dist/material/terrain-cm.js.map +1 -1
  172. package/dist/material/unlit.js.map +1 -1
  173. package/dist/material/water.js.map +1 -1
  174. package/dist/posteffect/bloom.js.map +1 -1
  175. package/dist/posteffect/compositor.js.map +1 -1
  176. package/dist/posteffect/fxaa.js.map +1 -1
  177. package/dist/posteffect/grayscale.js.map +1 -1
  178. package/dist/posteffect/motionblur.js.map +1 -1
  179. package/dist/posteffect/posteffect.js.map +1 -1
  180. package/dist/posteffect/sao.js.map +1 -1
  181. package/dist/posteffect/ssr.js +7 -5
  182. package/dist/posteffect/ssr.js.map +1 -1
  183. package/dist/posteffect/taa.js.map +1 -1
  184. package/dist/posteffect/tonemap.js.map +1 -1
  185. package/dist/render/abuffer_oit.js +8 -6
  186. package/dist/render/abuffer_oit.js.map +1 -1
  187. package/dist/render/clipmap.js +0 -10
  188. package/dist/render/clipmap.js.map +1 -1
  189. package/dist/render/cluster_light.js +4 -4
  190. package/dist/render/cluster_light.js.map +1 -1
  191. package/dist/render/cull_visitor.js +15 -17
  192. package/dist/render/cull_visitor.js.map +1 -1
  193. package/dist/render/depthpass.js +3 -4
  194. package/dist/render/depthpass.js.map +1 -1
  195. package/dist/render/drawable.js +15 -0
  196. package/dist/render/drawable.js.map +1 -0
  197. package/dist/render/drawable_mixin.js +8 -4
  198. package/dist/render/drawable_mixin.js.map +1 -1
  199. package/dist/render/envlight.js.map +1 -1
  200. package/dist/render/fbm_wavegenerator.js +3 -1
  201. package/dist/render/fbm_wavegenerator.js.map +1 -1
  202. package/dist/render/fft_wavegenerator.js +67 -64
  203. package/dist/render/fft_wavegenerator.js.map +1 -1
  204. package/dist/render/fullscreenquad.js.map +1 -1
  205. package/dist/render/gerstner_wavegenerator.js +3 -1
  206. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  207. package/dist/render/globalbindgroup_allocator.js +3 -1
  208. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  209. package/dist/render/hzb.js +1 -2
  210. package/dist/render/hzb.js.map +1 -1
  211. package/dist/render/lightpass.js +13 -13
  212. package/dist/render/lightpass.js.map +1 -1
  213. package/dist/render/objectcolorpass.js +4 -7
  214. package/dist/render/objectcolorpass.js.map +1 -1
  215. package/dist/render/primitive.js +4 -5
  216. package/dist/render/primitive.js.map +1 -1
  217. package/dist/render/render_queue.js +10 -5
  218. package/dist/render/render_queue.js.map +1 -1
  219. package/dist/render/renderer.js +16 -22
  220. package/dist/render/renderer.js.map +1 -1
  221. package/dist/render/renderpass.js +27 -52
  222. package/dist/render/renderpass.js.map +1 -1
  223. package/dist/render/rendertarget.js +5 -0
  224. package/dist/render/rendertarget.js.map +1 -0
  225. package/dist/render/screenrendertarget.js +56 -0
  226. package/dist/render/screenrendertarget.js.map +1 -0
  227. package/dist/render/shadowmap_pass.js +4 -5
  228. package/dist/render/shadowmap_pass.js.map +1 -1
  229. package/dist/render/sky.js +16 -14
  230. package/dist/render/sky.js.map +1 -1
  231. package/dist/render/weightedblended_oit.js.map +1 -1
  232. package/dist/scene/basesprite.js +296 -0
  233. package/dist/scene/basesprite.js.map +1 -0
  234. package/dist/scene/batchgroup.js +4 -2
  235. package/dist/scene/batchgroup.js.map +1 -1
  236. package/dist/scene/environment.js +9 -10
  237. package/dist/scene/environment.js.map +1 -1
  238. package/dist/scene/graph_node.js.map +1 -1
  239. package/dist/scene/light.js +22 -4
  240. package/dist/scene/light.js.map +1 -1
  241. package/dist/scene/mesh.js +96 -26
  242. package/dist/scene/mesh.js.map +1 -1
  243. package/dist/scene/octree.js.map +1 -1
  244. package/dist/scene/particlesys.js +25 -22
  245. package/dist/scene/particlesys.js.map +1 -1
  246. package/dist/scene/raycast_visitor.js +0 -16
  247. package/dist/scene/raycast_visitor.js.map +1 -1
  248. package/dist/scene/scene.js +7 -4
  249. package/dist/scene/scene.js.map +1 -1
  250. package/dist/scene/scene_node.js +20 -35
  251. package/dist/scene/scene_node.js.map +1 -1
  252. package/dist/scene/sprite.js +18 -0
  253. package/dist/scene/sprite.js.map +1 -0
  254. package/dist/scene/sprite3d.js +18 -0
  255. package/dist/scene/sprite3d.js.map +1 -0
  256. package/dist/scene/terrain-cm/grass.js +5 -4
  257. package/dist/scene/terrain-cm/grass.js.map +1 -1
  258. package/dist/scene/terrain-cm/grassmaterial.js +3 -1
  259. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  260. package/dist/scene/terrain-cm/terrain-cm.js +65 -48
  261. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  262. package/dist/scene/water.js +35 -30
  263. package/dist/scene/water.js.map +1 -1
  264. package/dist/shaders/atmosphere.js +17 -29
  265. package/dist/shaders/atmosphere.js.map +1 -1
  266. package/dist/shaders/fog.js.map +1 -1
  267. package/dist/shaders/misc.js.map +1 -1
  268. package/dist/shaders/noise.js.map +1 -1
  269. package/dist/shaders/pbr.js.map +1 -1
  270. package/dist/shaders/shadow.js.map +1 -1
  271. package/dist/shaders/ssr.js.map +1 -1
  272. package/dist/shaders/temporal.js.map +1 -1
  273. package/dist/shaders/water.js.map +1 -1
  274. package/dist/shadow/esm.js +1 -1
  275. package/dist/shadow/esm.js.map +1 -1
  276. package/dist/shadow/pcf_opt.js.map +1 -1
  277. package/dist/shadow/pcf_pd.js.map +1 -1
  278. package/dist/shadow/shader.js +3 -1
  279. package/dist/shadow/shader.js.map +1 -1
  280. package/dist/shadow/shadow_impl.js.map +1 -1
  281. package/dist/shadow/shadowmapper.js +6 -18
  282. package/dist/shadow/shadowmapper.js.map +1 -1
  283. package/dist/shadow/ssm.js.map +1 -1
  284. package/dist/shadow/vsm.js.map +1 -1
  285. package/dist/shapes/box.js +9 -3
  286. package/dist/shapes/box.js.map +1 -1
  287. package/dist/shapes/cylinder.js +2 -2
  288. package/dist/shapes/cylinder.js.map +1 -1
  289. package/dist/shapes/plane.js +2 -2
  290. package/dist/shapes/plane.js.map +1 -1
  291. package/dist/shapes/shape.js +2 -1
  292. package/dist/shapes/shape.js.map +1 -1
  293. package/dist/shapes/sphere.js +2 -2
  294. package/dist/shapes/sphere.js.map +1 -1
  295. package/dist/shapes/tetrahedron.js +5 -6
  296. package/dist/shapes/tetrahedron.js.map +1 -1
  297. package/dist/shapes/torus.js +2 -2
  298. package/dist/shapes/torus.js.map +1 -1
  299. package/dist/utility/aabbtree.js +1 -1
  300. package/dist/utility/aabbtree.js.map +1 -1
  301. package/dist/utility/blueprint/common/constants.js +578 -104
  302. package/dist/utility/blueprint/common/constants.js.map +1 -1
  303. package/dist/utility/blueprint/common/math.js +471 -9
  304. package/dist/utility/blueprint/common/math.js.map +1 -1
  305. package/dist/utility/blueprint/common.js +1 -1
  306. package/dist/utility/blueprint/common.js.map +1 -1
  307. package/dist/utility/blueprint/material/func.js +9 -5
  308. package/dist/utility/blueprint/material/func.js.map +1 -1
  309. package/dist/utility/blueprint/material/inputs.js.map +1 -1
  310. package/dist/utility/blueprint/material/ir.js +288 -80
  311. package/dist/utility/blueprint/material/ir.js.map +1 -1
  312. package/dist/utility/blueprint/material/pbr.js +92 -4
  313. package/dist/utility/blueprint/material/pbr.js.map +1 -1
  314. package/dist/utility/blueprint/material/texture.js +62 -45
  315. package/dist/utility/blueprint/material/texture.js.map +1 -1
  316. package/dist/utility/blueprint/node.js +28 -1
  317. package/dist/utility/blueprint/node.js.map +1 -1
  318. package/dist/utility/bounding_volume.js.map +1 -1
  319. package/dist/utility/debug.js.map +1 -1
  320. package/dist/utility/draco/decoder.js.map +1 -1
  321. package/dist/utility/misc.js +1 -1
  322. package/dist/utility/misc.js.map +1 -1
  323. package/dist/utility/panorama.js.map +1 -1
  324. package/dist/utility/pmrem.js.map +1 -1
  325. package/dist/utility/rendermipmap.js.map +1 -1
  326. package/dist/utility/serialization/json.js +19 -15
  327. package/dist/utility/serialization/json.js.map +1 -1
  328. package/dist/utility/serialization/manager.js +89 -22
  329. package/dist/utility/serialization/manager.js.map +1 -1
  330. package/dist/utility/serialization/scene/animation.js +44 -41
  331. package/dist/utility/serialization/scene/animation.js.map +1 -1
  332. package/dist/utility/serialization/scene/batch.js +4 -3
  333. package/dist/utility/serialization/scene/batch.js.map +1 -1
  334. package/dist/utility/serialization/scene/camera.js +97 -9
  335. package/dist/utility/serialization/scene/camera.js.map +1 -1
  336. package/dist/utility/serialization/scene/common.js +102 -28
  337. package/dist/utility/serialization/scene/common.js.map +1 -1
  338. package/dist/utility/serialization/scene/light.js +14 -12
  339. package/dist/utility/serialization/scene/light.js.map +1 -1
  340. package/dist/utility/serialization/scene/material.js +216 -26
  341. package/dist/utility/serialization/scene/material.js.map +1 -1
  342. package/dist/utility/serialization/scene/mesh.js +71 -100
  343. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  344. package/dist/utility/serialization/scene/misc.js +3 -2
  345. package/dist/utility/serialization/scene/misc.js.map +1 -1
  346. package/dist/utility/serialization/scene/node.js +42 -9
  347. package/dist/utility/serialization/scene/node.js.map +1 -1
  348. package/dist/utility/serialization/scene/particle.js +7 -5
  349. package/dist/utility/serialization/scene/particle.js.map +1 -1
  350. package/dist/utility/serialization/scene/primitive.js +18 -15
  351. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  352. package/dist/utility/serialization/scene/scene.js +3 -2
  353. package/dist/utility/serialization/scene/scene.js.map +1 -1
  354. package/dist/utility/serialization/scene/sprite.js +164 -0
  355. package/dist/utility/serialization/scene/sprite.js.map +1 -0
  356. package/dist/utility/serialization/scene/terrain.js +8 -6
  357. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  358. package/dist/utility/serialization/scene/water.js +11 -9
  359. package/dist/utility/serialization/scene/water.js.map +1 -1
  360. package/dist/utility/serialization/types.js +6 -0
  361. package/dist/utility/serialization/types.js.map +1 -0
  362. package/dist/utility/shprojector.js.map +1 -1
  363. package/dist/utility/textures/ggxlut.js.map +1 -1
  364. package/dist/utility/textures/gradientnoise.js.map +1 -1
  365. package/dist/utility/textures/randomnoise.js.map +1 -1
  366. package/dist/values.js +14 -14
  367. package/dist/values.js.map +1 -1
  368. package/package.json +80 -80
@@ -4,7 +4,7 @@ import { getSceneNodeClass, getGraphNodeClass } from './scene/node.js';
4
4
  import { getBatchGroupClass } from './scene/batch.js';
5
5
  import { getCameraClass, getPerspectiveCameraClass, getOrthoCameraClass } from './scene/camera.js';
6
6
  import { getPunctualLightClass, getDirectionalLightClass, getSpotLightClass, getPointLightClass } from './scene/light.js';
7
- import { getMeshMaterialClass, getPBRBluePrintMaterialClass, getUnlitMaterialClass, getLambertMaterialClass, getBlinnMaterialClass, getPBRMetallicRoughnessMaterialClass, getPBRSpecularGlossinessMaterialClass, getParticleMaterialClass } from './scene/material.js';
7
+ import { getMeshMaterialClass, getPBRBluePrintMaterialClass, getSpriteBlueprintMaterialClass, getUnlitMaterialClass, getLambertMaterialClass, getBlinnMaterialClass, getPBRMetallicRoughnessMaterialClass, getPBRSpecularGlossinessMaterialClass, getParticleMaterialClass, getSpriteMaterialClass, getStandardSpriteMaterialClass } from './scene/material.js';
8
8
  import { getMeshClass } from './scene/mesh.js';
9
9
  import { getParticleNodeClass } from './scene/particle.js';
10
10
  import { getBoxShapeClass, getBoxFrameShapeClass, getSphereShapeClass, getTorusShapeClass, getCylinderShapeClass, getPlaneShapeClass, getTetrahedronShapeClass } from './scene/primitive.js';
@@ -22,11 +22,18 @@ import '../../material/unlit.js';
22
22
  import '../../material/particle.js';
23
23
  import '../../material/meshmaterial.js';
24
24
  import '../../material/grassmaterial.js';
25
- import '../../material/terrainmaterial.js';
26
25
  import '../../material/terrain-cm.js';
27
26
  import '../../material/pbrmr.js';
28
27
  import '../../material/pbrsg.js';
29
28
  import '../../material/pbrblueprint.js';
29
+ import '../../material/sprite.js';
30
+ import '../../material/sprite_std.js';
31
+ import { PBRBlockNode, SpriteBlockNode, VertexBlockNode } from '../blueprint/material/pbr.js';
32
+ import { ConstantScalarNode, ConstantVec2Node, ConstantVec3Node, ConstantVec4Node, ConstantBooleanNode, ConstantBVec2Node, ConstantBVec3Node, ConstantBVec4Node } from '../blueprint/common/constants.js';
33
+ import { ConstantTexture2DNode, ConstantTexture2DArrayNode, ConstantTextureCubeNode, TextureSampleNode } from '../blueprint/material/texture.js';
34
+ import { 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, FaceForwardNode, ReflectNode, RefractNode, LengthNode, DistanceNode, DotProductNode, CrossProductNode, Hash1Node, Hash2Node, Hash3Node, SimplexNoise2DNode, PerlinNoise2DNode } from '../blueprint/common/math.js';
35
+ import { VertexColorNode, VertexUVNode, VertexPositionNode, VertexNormalNode, VertexTangentNode, VertexBinormalNode, ViewMatrixNode, ProjectionMatrixNode, ViewProjMatrixNode, InvProjMatrixNode, InvViewProjMatrixNode, BillboardMatrixNode, CameraPositionNode, CameraNearFarNode, SkyEnvTextureNode, ElapsedTimeNode, ResolveVertexPositionNode, ResolveVertexTangentNode, ResolveVertexNormalNode } from '../blueprint/material/inputs.js';
36
+ import { FunctionInputNode, FunctionOutputNode, FunctionCallNode } from '../blueprint/material/func.js';
30
37
  import '../../render/renderer.js';
31
38
  import '../../render/primitive.js';
32
39
  import '../../render/sky.js';
@@ -35,23 +42,17 @@ import '../../shaders/atmosphere.js';
35
42
  import { SceneNode } from '../../scene/scene_node.js';
36
43
  import '../../shadow/shadowmapper.js';
37
44
  import '../../scene/mesh.js';
45
+ import '../../scene/basesprite.js';
38
46
  import '../../scene/water.js';
39
47
  import '../../scene/particlesys.js';
40
48
  import '../../scene/batchgroup.js';
41
- import '../../scene/terrain/patch.js';
42
- import '../../scene/terrain/grass.js';
43
49
  import '../../scene/terrain-cm/terrain-cm.js';
44
50
  import '../../scene/terrain-cm/grass.js';
45
51
  import { AssetManager } from '../../asset/assetmanager.js';
46
52
  import '../../animation/eulerrotationtrack.js';
47
53
  import '../../animation/skeleton.js';
48
54
  import { getJSONPropClass, getJSONNumberClass, getJSONStringClass, getJSONBoolClass, getJSONObjectClass, getJSONArrayClass } from './json.js';
49
- import { ConstantScalarNode, ConstantVec2Node, ConstantVec3Node, ConstantVec4Node } from '../blueprint/common/constants.js';
50
- import { ConstantTexture2DNode, ConstantTexture2DArrayNode, ConstantTextureCubeNode, TextureSampleNode } from '../blueprint/material/texture.js';
51
- import { MakeVectorNode, SwizzleNode, 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, FmaNode, ClampNode, SaturateNode, MixNode, NormalizeNode, TransformNode, FaceForwardNode, ReflectNode, RefractNode, LengthNode, DistanceNode, DotProductNode, CrossProductNode, Hash1Node, Hash2Node, Hash3Node, SimplexNoise2DNode, PerlinNoise2DNode } from '../blueprint/common/math.js';
52
- import { VertexColorNode, VertexUVNode, VertexPositionNode, VertexNormalNode, VertexTangentNode, VertexBinormalNode, ViewMatrixNode, ProjectionMatrixNode, ViewProjMatrixNode, InvProjMatrixNode, InvViewProjMatrixNode, BillboardMatrixNode, CameraPositionNode, CameraNearFarNode, SkyEnvTextureNode, ElapsedTimeNode, ResolveVertexPositionNode, ResolveVertexTangentNode, ResolveVertexNormalNode } from '../blueprint/material/inputs.js';
53
- import { PBRBlockNode, VertexBlockNode } from '../blueprint/material/pbr.js';
54
- import { FunctionInputNode, FunctionOutputNode, FunctionCallNode } from '../blueprint/material/func.js';
55
+ import { getSpriteClass } from './scene/sprite.js';
55
56
 
56
57
  const defaultValues = {
57
58
  bool: false,
@@ -168,6 +169,7 @@ const defaultValues = {
168
169
  getSceneNodeClass(this),
169
170
  getGraphNodeClass(),
170
171
  getMeshClass(),
172
+ getSpriteClass(),
171
173
  getWaterClass(this),
172
174
  getTerrainClass(this),
173
175
  getFFTWaveGeneratorClass(),
@@ -184,12 +186,15 @@ const defaultValues = {
184
186
  getSceneClass(this),
185
187
  ...getMeshMaterialClass(),
186
188
  ...getPBRBluePrintMaterialClass(),
189
+ ...getSpriteBlueprintMaterialClass(),
187
190
  ...getUnlitMaterialClass(this),
188
191
  ...getLambertMaterialClass(this),
189
192
  ...getBlinnMaterialClass(this),
190
193
  ...getPBRMetallicRoughnessMaterialClass(this),
191
194
  ...getPBRSpecularGlossinessMaterialClass(this),
192
195
  ...getParticleMaterialClass(this),
196
+ ...getSpriteMaterialClass(),
197
+ ...getStandardSpriteMaterialClass(this),
193
198
  getBoxShapeClass(),
194
199
  getBoxFrameShapeClass(),
195
200
  getSphereShapeClass(),
@@ -201,11 +206,23 @@ const defaultValues = {
201
206
  ConstantVec2Node.getSerializationCls(),
202
207
  ConstantVec3Node.getSerializationCls(),
203
208
  ConstantVec4Node.getSerializationCls(),
209
+ ConstantBooleanNode.getSerializationCls(),
210
+ ConstantBVec2Node.getSerializationCls(),
211
+ ConstantBVec3Node.getSerializationCls(),
212
+ ConstantBVec4Node.getSerializationCls(),
204
213
  ConstantTexture2DNode.getSerializationCls(),
205
214
  ConstantTexture2DArrayNode.getSerializationCls(),
206
215
  ConstantTextureCubeNode.getSerializationCls(),
207
216
  MakeVectorNode.getSerializationCls(),
208
217
  SwizzleNode.getSerializationCls(),
218
+ EqualNode.getSerializationCls(),
219
+ NotEqualNode.getSerializationCls(),
220
+ LogicallyAndNode.getSerializationCls(),
221
+ LogicallyOrNode.getSerializationCls(),
222
+ CompComparisonNode.getSerializationCls(),
223
+ AnyConditionNode.getSerializationCls(),
224
+ AllConditionNode.getSerializationCls(),
225
+ SelectionNode.getSerializationCls(),
209
226
  Degrees2RadiansNode.getSerializationCls(),
210
227
  Radians2DegreesNode.getSerializationCls(),
211
228
  SinNode.getSerializationCls(),
@@ -244,6 +261,7 @@ const defaultValues = {
244
261
  MaxNode.getSerializationCls(),
245
262
  PowNode.getSerializationCls(),
246
263
  StepNode.getSerializationCls(),
264
+ SmoothStepNode.getSerializationCls(),
247
265
  FmaNode.getSerializationCls(),
248
266
  ClampNode.getSerializationCls(),
249
267
  SaturateNode.getSerializationCls(),
@@ -279,6 +297,7 @@ const defaultValues = {
279
297
  SkyEnvTextureNode.getSerializationCls(),
280
298
  ElapsedTimeNode.getSerializationCls(),
281
299
  PBRBlockNode.getSerializationCls(),
300
+ SpriteBlockNode.getSerializationCls(),
282
301
  VertexBlockNode.getSerializationCls(),
283
302
  ResolveVertexPositionNode.getSerializationCls(),
284
303
  ResolveVertexTangentNode.getSerializationCls(),
@@ -512,10 +531,31 @@ const defaultValues = {
512
531
  json.Init = initParams;
513
532
  }
514
533
  if (flags.saveProps) {
515
- while(info){
516
- await this.serializeObjectProps(obj, info, json.Object, asyncTasks);
517
- info = this.getClassByConstructor(info.parent);
534
+ await this.serializeObjectProps(obj, json.Object, asyncTasks, info);
535
+ }
536
+ return json;
537
+ }
538
+ /**
539
+ * Serialize object properties into a JSON structure.
540
+ *
541
+ * @param obj - The target object to serialize.
542
+ * @param json - The JSON structure to populate.
543
+ * @param asyncTasks - Optional list to collect async tasks for embedded asset export.
544
+ * @param info - Optional serialization metadata for the object's class.
545
+ * @returns A Promise that resolves when serialization is complete.
546
+ */ async serializeObjectProps(obj, json, asyncTasks, info) {
547
+ if (!info) {
548
+ const cls = this.getClasses();
549
+ const index = cls.findIndex((val)=>val.ctor === obj.constructor);
550
+ if (index < 0) {
551
+ throw new Error('Serialize object properties failed: Cannot found serialization meta data');
518
552
  }
553
+ info = cls[index];
554
+ }
555
+ json = json ?? {};
556
+ while(info){
557
+ await this.serializeObjectPropsForCls(obj, info, json, asyncTasks);
558
+ info = this.getClassByConstructor(info.parent);
519
559
  }
520
560
  return json;
521
561
  }
@@ -558,14 +598,31 @@ const defaultValues = {
558
598
  }
559
599
  const obj = p instanceof Promise ? await p : p;
560
600
  if (loadProps) {
561
- while(info){
562
- await this.deserializeObjectProps(obj, info, json);
563
- info = this.getClassByConstructor(info.parent);
564
- }
601
+ await this.deserializeObjectProps(obj, json, info);
565
602
  }
566
603
  return obj;
567
604
  }
568
605
  /**
606
+ * Deserialize object properties from JSON into an existing object instance.
607
+ *
608
+ * @param obj - The target object to populate.
609
+ * @param json - The JSON structure containing serialized properties.
610
+ * @param info - Optional serialization metadata for the object's class.
611
+ */ async deserializeObjectProps(obj, json, info) {
612
+ if (!info) {
613
+ const cls = this.getClasses();
614
+ const index = cls.findIndex((val)=>val.ctor === obj.constructor);
615
+ if (index < 0) {
616
+ throw new Error('Deserialize object properties failed: Cannot found serialization meta data');
617
+ }
618
+ info = cls[index];
619
+ }
620
+ while(info){
621
+ await this.deserializeObjectPropsForCls(obj, info, json);
622
+ info = this.getClassByConstructor(info.parent);
623
+ }
624
+ }
625
+ /**
569
626
  * Load a model by ID and track the allocation for reverse lookup.
570
627
  *
571
628
  * @param id - Model identifier or path.
@@ -632,6 +689,12 @@ const defaultValues = {
632
689
  await this._assetManager.reloadBluePrintMaterials(filter);
633
690
  }
634
691
  /**
692
+ * Mark specific blue print as changed
693
+ * @param path - BluePrint file path
694
+ */ invalidateBluePrint(path) {
695
+ this._assetManager.invalidateBluePrint(path);
696
+ }
697
+ /**
635
698
  * Load a primitive by ID and track the allocation for reverse lookup.
636
699
  *
637
700
  * @param id - Primitive identifier or path.
@@ -672,7 +735,7 @@ const defaultValues = {
672
735
  const tmpNode = new DRef(new SceneNode(parent.scene));
673
736
  tmpNode.get().remove();
674
737
  tmpNode.get().prefabId = this._vfs.normalizePath(path);
675
- const node = await this.deserializeObject(tmpNode.get(), json.data);
738
+ const node = await this.deserializeObject(tmpNode.get(), json['data']);
676
739
  node.prefabId = tmpNode.get().prefabId;
677
740
  node.parent = parent;
678
741
  node.persistentId = randomUUID();
@@ -878,6 +941,9 @@ const defaultValues = {
878
941
  */ findAnimationTarget(node, track) {
879
942
  const target = track.target ?? '';
880
943
  const value = {
944
+ num: [],
945
+ bool: [],
946
+ str: [],
881
947
  object: []
882
948
  };
883
949
  const parts = target.split('/').filter((val)=>!!val);
@@ -936,7 +1002,7 @@ const defaultValues = {
936
1002
  }
937
1003
  return v;
938
1004
  }
939
- async deserializeObjectProps(obj, cls, json) {
1005
+ async deserializeObjectPropsForCls(obj, cls, json) {
940
1006
  const props = (this.getPropertiesByClass(cls) ?? []).sort((a, b)=>(a.phase ?? 0) - (b.phase ?? 0));
941
1007
  let currentPhase = undefined;
942
1008
  const promises = [];
@@ -1042,7 +1108,7 @@ const defaultValues = {
1042
1108
  await Promise.all(promises);
1043
1109
  }
1044
1110
  }
1045
- async serializeObjectProps(obj, cls, json, asyncTasks) {
1111
+ async serializeObjectPropsForCls(obj, cls, json, asyncTasks) {
1046
1112
  const props = this.getPropertiesByClass(cls) ?? [];
1047
1113
  for (const prop of props){
1048
1114
  if (prop.isValid && !prop.isValid.call(obj)) {
@@ -1085,10 +1151,11 @@ const defaultValues = {
1085
1151
  }
1086
1152
  case 'object_array':
1087
1153
  if (tmpVal.object.length > 0) {
1088
- json[k] = [];
1154
+ const arr = [];
1089
1155
  for (const p of tmpVal.object){
1090
- json[k].push(await this.serializeObject(p, {}, asyncTasks));
1156
+ arr.push(await this.serializeObject(p, {}, asyncTasks));
1091
1157
  }
1158
+ json[k] = arr;
1092
1159
  }
1093
1160
  break;
1094
1161
  case 'embedded':