@zephyr3d/scene 0.7.0 → 0.7.1

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 (319) hide show
  1. package/dist/animation/animation.js +4 -15
  2. package/dist/animation/animation.js.map +1 -1
  3. package/dist/animation/animationset.js +22 -9
  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/morphtarget.js +7 -1
  10. package/dist/animation/morphtarget.js.map +1 -1
  11. package/dist/animation/morphtrack.js +3 -3
  12. package/dist/animation/morphtrack.js.map +1 -1
  13. package/dist/animation/proptrack.js +37 -41
  14. package/dist/animation/proptrack.js.map +1 -1
  15. package/dist/animation/rotationtrack.js +0 -1
  16. package/dist/animation/rotationtrack.js.map +1 -1
  17. package/dist/animation/scaletrack.js +0 -1
  18. package/dist/animation/scaletrack.js.map +1 -1
  19. package/dist/animation/skeleton.js +7 -14
  20. package/dist/animation/skeleton.js.map +1 -1
  21. package/dist/animation/translationtrack.js +0 -1
  22. package/dist/animation/translationtrack.js.map +1 -1
  23. package/dist/app/api.js +13 -4
  24. package/dist/app/api.js.map +1 -1
  25. package/dist/app/app.js +13 -1
  26. package/dist/app/app.js.map +1 -1
  27. package/dist/app/engine.js +33 -45
  28. package/dist/app/engine.js.map +1 -1
  29. package/dist/app/inputmgr.js.map +1 -1
  30. package/dist/app/runtimescript.js.map +1 -1
  31. package/dist/app/screen.js +318 -0
  32. package/dist/app/screen.js.map +1 -0
  33. package/dist/app/scriptingsystem.js +10 -6
  34. package/dist/app/scriptingsystem.js.map +1 -1
  35. package/dist/app/scriptregistry.js +11 -22
  36. package/dist/app/scriptregistry.js.map +1 -1
  37. package/dist/asset/assetmanager.js +79 -58
  38. package/dist/asset/assetmanager.js.map +1 -1
  39. package/dist/asset/builtin.js +5 -5
  40. package/dist/asset/builtin.js.map +1 -1
  41. package/dist/asset/loaders/dds/dds.js +6 -2
  42. package/dist/asset/loaders/dds/dds.js.map +1 -1
  43. package/dist/asset/loaders/dds/dds_loader.js +1 -1
  44. package/dist/asset/loaders/dds/dds_loader.js.map +1 -1
  45. package/dist/asset/loaders/gltf/gltf_loader.js +14 -6
  46. package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
  47. package/dist/asset/loaders/gltf/helpers.js +6 -2
  48. package/dist/asset/loaders/gltf/helpers.js.map +1 -1
  49. package/dist/asset/loaders/hdr/hdr.js +22 -15
  50. package/dist/asset/loaders/hdr/hdr.js.map +1 -1
  51. package/dist/asset/loaders/image/tga_Loader.js +2 -1
  52. package/dist/asset/loaders/image/tga_Loader.js.map +1 -1
  53. package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
  54. package/dist/asset/loaders/loader.js +2 -2
  55. package/dist/asset/loaders/loader.js.map +1 -1
  56. package/dist/asset/model.js +2 -2
  57. package/dist/asset/model.js.map +1 -1
  58. package/dist/blitter/bilateralblur.js.map +1 -1
  59. package/dist/blitter/blitter.js +9 -11
  60. package/dist/blitter/blitter.js.map +1 -1
  61. package/dist/blitter/box.js +0 -1
  62. package/dist/blitter/box.js.map +1 -1
  63. package/dist/blitter/copy.js.map +1 -1
  64. package/dist/blitter/gaussianblur.js.map +1 -1
  65. package/dist/camera/base.js +1 -3
  66. package/dist/camera/base.js.map +1 -1
  67. package/dist/camera/camera.js +121 -37
  68. package/dist/camera/camera.js.map +1 -1
  69. package/dist/camera/fps.js +19 -17
  70. package/dist/camera/fps.js.map +1 -1
  71. package/dist/camera/orbit.js +45 -43
  72. package/dist/camera/orbit.js.map +1 -1
  73. package/dist/camera/orthocamera.js +27 -21
  74. package/dist/camera/orthocamera.js.map +1 -1
  75. package/dist/camera/perspectivecamera.js +26 -17
  76. package/dist/camera/perspectivecamera.js.map +1 -1
  77. package/dist/index.d.ts +14453 -15609
  78. package/dist/index.js +17 -11
  79. package/dist/index.js.map +1 -1
  80. package/dist/material/blinn.js.map +1 -1
  81. package/dist/material/grassmaterial.js.map +1 -1
  82. package/dist/material/lambert.js.map +1 -1
  83. package/dist/material/material.js +11 -5
  84. package/dist/material/material.js.map +1 -1
  85. package/dist/material/meshmaterial.js +10 -9
  86. package/dist/material/meshmaterial.js.map +1 -1
  87. package/dist/material/mixins/albedocolor.js.map +1 -1
  88. package/dist/material/mixins/foliage.js.map +1 -1
  89. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  90. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  91. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +7 -0
  92. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  93. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  94. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  95. package/dist/material/mixins/lit.js +3 -3
  96. package/dist/material/mixins/lit.js.map +1 -1
  97. package/dist/material/mixins/pbr/brdf.js.map +1 -1
  98. package/dist/material/mixins/pbr/common.js.map +1 -1
  99. package/dist/material/mixins/texture.js +3 -0
  100. package/dist/material/mixins/texture.js.map +1 -1
  101. package/dist/material/mixins/vertexcolor.js.map +1 -1
  102. package/dist/material/particle.js.map +1 -1
  103. package/dist/material/pbrblueprint.js +180 -22
  104. package/dist/material/pbrblueprint.js.map +1 -1
  105. package/dist/material/pbrmr.js.map +1 -1
  106. package/dist/material/pbrsg.js.map +1 -1
  107. package/dist/material/shader/helper.js +36 -53
  108. package/dist/material/shader/helper.js.map +1 -1
  109. package/dist/material/sprite.js +301 -0
  110. package/dist/material/sprite.js.map +1 -0
  111. package/dist/material/sprite3d.js +301 -0
  112. package/dist/material/sprite3d.js.map +1 -0
  113. package/dist/material/sprite3d_std.js +116 -0
  114. package/dist/material/sprite3d_std.js.map +1 -0
  115. package/dist/material/sprite3dblueprint.js +235 -0
  116. package/dist/material/sprite3dblueprint.js.map +1 -0
  117. package/dist/material/sprite_std.js +116 -0
  118. package/dist/material/sprite_std.js.map +1 -0
  119. package/dist/material/spriteblueprint.js +235 -0
  120. package/dist/material/spriteblueprint.js.map +1 -0
  121. package/dist/material/terrain-cm.js +0 -1
  122. package/dist/material/terrain-cm.js.map +1 -1
  123. package/dist/material/unlit.js.map +1 -1
  124. package/dist/material/water.js.map +1 -1
  125. package/dist/posteffect/bloom.js.map +1 -1
  126. package/dist/posteffect/compositor.js.map +1 -1
  127. package/dist/posteffect/fxaa.js.map +1 -1
  128. package/dist/posteffect/grayscale.js.map +1 -1
  129. package/dist/posteffect/motionblur.js.map +1 -1
  130. package/dist/posteffect/posteffect.js.map +1 -1
  131. package/dist/posteffect/sao.js.map +1 -1
  132. package/dist/posteffect/ssr.js +7 -5
  133. package/dist/posteffect/ssr.js.map +1 -1
  134. package/dist/posteffect/taa.js.map +1 -1
  135. package/dist/posteffect/tonemap.js.map +1 -1
  136. package/dist/render/abuffer_oit.js +8 -6
  137. package/dist/render/abuffer_oit.js.map +1 -1
  138. package/dist/render/clipmap.js +0 -10
  139. package/dist/render/clipmap.js.map +1 -1
  140. package/dist/render/cluster_light.js +4 -4
  141. package/dist/render/cluster_light.js.map +1 -1
  142. package/dist/render/cull_visitor.js +15 -17
  143. package/dist/render/cull_visitor.js.map +1 -1
  144. package/dist/render/depthpass.js +3 -4
  145. package/dist/render/depthpass.js.map +1 -1
  146. package/dist/render/drawable.js +15 -0
  147. package/dist/render/drawable.js.map +1 -0
  148. package/dist/render/drawable_mixin.js +8 -4
  149. package/dist/render/drawable_mixin.js.map +1 -1
  150. package/dist/render/envlight.js.map +1 -1
  151. package/dist/render/fbm_wavegenerator.js +3 -1
  152. package/dist/render/fbm_wavegenerator.js.map +1 -1
  153. package/dist/render/fft_wavegenerator.js +67 -64
  154. package/dist/render/fft_wavegenerator.js.map +1 -1
  155. package/dist/render/fullscreenquad.js.map +1 -1
  156. package/dist/render/gerstner_wavegenerator.js +3 -1
  157. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  158. package/dist/render/globalbindgroup_allocator.js +3 -1
  159. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  160. package/dist/render/hzb.js +1 -2
  161. package/dist/render/hzb.js.map +1 -1
  162. package/dist/render/lightpass.js +13 -13
  163. package/dist/render/lightpass.js.map +1 -1
  164. package/dist/render/objectcolorpass.js +4 -7
  165. package/dist/render/objectcolorpass.js.map +1 -1
  166. package/dist/render/primitive.js +4 -5
  167. package/dist/render/primitive.js.map +1 -1
  168. package/dist/render/render_queue.js +10 -5
  169. package/dist/render/render_queue.js.map +1 -1
  170. package/dist/render/renderer.js +16 -22
  171. package/dist/render/renderer.js.map +1 -1
  172. package/dist/render/renderpass.js +27 -52
  173. package/dist/render/renderpass.js.map +1 -1
  174. package/dist/render/rendertarget.js +5 -0
  175. package/dist/render/rendertarget.js.map +1 -0
  176. package/dist/render/screenrendertarget.js +56 -0
  177. package/dist/render/screenrendertarget.js.map +1 -0
  178. package/dist/render/shadowmap_pass.js +4 -5
  179. package/dist/render/shadowmap_pass.js.map +1 -1
  180. package/dist/render/sky.js +16 -14
  181. package/dist/render/sky.js.map +1 -1
  182. package/dist/render/weightedblended_oit.js.map +1 -1
  183. package/dist/scene/basesprite.js +296 -0
  184. package/dist/scene/basesprite.js.map +1 -0
  185. package/dist/scene/batchgroup.js +4 -2
  186. package/dist/scene/batchgroup.js.map +1 -1
  187. package/dist/scene/environment.js +9 -10
  188. package/dist/scene/environment.js.map +1 -1
  189. package/dist/scene/graph_node.js.map +1 -1
  190. package/dist/scene/light.js +22 -4
  191. package/dist/scene/light.js.map +1 -1
  192. package/dist/scene/mesh.js +93 -15
  193. package/dist/scene/mesh.js.map +1 -1
  194. package/dist/scene/octree.js.map +1 -1
  195. package/dist/scene/particlesys.js +25 -22
  196. package/dist/scene/particlesys.js.map +1 -1
  197. package/dist/scene/raycast_visitor.js +0 -16
  198. package/dist/scene/raycast_visitor.js.map +1 -1
  199. package/dist/scene/scene.js +7 -4
  200. package/dist/scene/scene.js.map +1 -1
  201. package/dist/scene/scene_node.js +20 -35
  202. package/dist/scene/scene_node.js.map +1 -1
  203. package/dist/scene/sprite.js +18 -0
  204. package/dist/scene/sprite.js.map +1 -0
  205. package/dist/scene/sprite3d.js +18 -0
  206. package/dist/scene/sprite3d.js.map +1 -0
  207. package/dist/scene/terrain-cm/grass.js +5 -4
  208. package/dist/scene/terrain-cm/grass.js.map +1 -1
  209. package/dist/scene/terrain-cm/grassmaterial.js +3 -1
  210. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  211. package/dist/scene/terrain-cm/terrain-cm.js +65 -48
  212. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  213. package/dist/scene/water.js +35 -30
  214. package/dist/scene/water.js.map +1 -1
  215. package/dist/shaders/atmosphere.js +17 -29
  216. package/dist/shaders/atmosphere.js.map +1 -1
  217. package/dist/shaders/fog.js.map +1 -1
  218. package/dist/shaders/misc.js.map +1 -1
  219. package/dist/shaders/noise.js.map +1 -1
  220. package/dist/shaders/pbr.js.map +1 -1
  221. package/dist/shaders/shadow.js.map +1 -1
  222. package/dist/shaders/ssr.js.map +1 -1
  223. package/dist/shaders/temporal.js.map +1 -1
  224. package/dist/shaders/water.js.map +1 -1
  225. package/dist/shadow/esm.js +1 -1
  226. package/dist/shadow/esm.js.map +1 -1
  227. package/dist/shadow/pcf_opt.js.map +1 -1
  228. package/dist/shadow/pcf_pd.js.map +1 -1
  229. package/dist/shadow/shader.js +3 -1
  230. package/dist/shadow/shader.js.map +1 -1
  231. package/dist/shadow/shadow_impl.js.map +1 -1
  232. package/dist/shadow/shadowmapper.js +6 -18
  233. package/dist/shadow/shadowmapper.js.map +1 -1
  234. package/dist/shadow/ssm.js.map +1 -1
  235. package/dist/shadow/vsm.js.map +1 -1
  236. package/dist/shapes/box.js +9 -3
  237. package/dist/shapes/box.js.map +1 -1
  238. package/dist/shapes/cylinder.js +2 -2
  239. package/dist/shapes/cylinder.js.map +1 -1
  240. package/dist/shapes/plane.js +2 -2
  241. package/dist/shapes/plane.js.map +1 -1
  242. package/dist/shapes/shape.js +2 -1
  243. package/dist/shapes/shape.js.map +1 -1
  244. package/dist/shapes/sphere.js +2 -2
  245. package/dist/shapes/sphere.js.map +1 -1
  246. package/dist/shapes/tetrahedron.js +5 -6
  247. package/dist/shapes/tetrahedron.js.map +1 -1
  248. package/dist/shapes/torus.js +2 -2
  249. package/dist/shapes/torus.js.map +1 -1
  250. package/dist/utility/aabbtree.js +1 -1
  251. package/dist/utility/aabbtree.js.map +1 -1
  252. package/dist/utility/blueprint/common/constants.js +578 -104
  253. package/dist/utility/blueprint/common/constants.js.map +1 -1
  254. package/dist/utility/blueprint/common/math.js +471 -9
  255. package/dist/utility/blueprint/common/math.js.map +1 -1
  256. package/dist/utility/blueprint/common.js +1 -1
  257. package/dist/utility/blueprint/common.js.map +1 -1
  258. package/dist/utility/blueprint/material/func.js +9 -5
  259. package/dist/utility/blueprint/material/func.js.map +1 -1
  260. package/dist/utility/blueprint/material/inputs.js.map +1 -1
  261. package/dist/utility/blueprint/material/ir.js +288 -80
  262. package/dist/utility/blueprint/material/ir.js.map +1 -1
  263. package/dist/utility/blueprint/material/pbr.js +92 -4
  264. package/dist/utility/blueprint/material/pbr.js.map +1 -1
  265. package/dist/utility/blueprint/material/texture.js +62 -45
  266. package/dist/utility/blueprint/material/texture.js.map +1 -1
  267. package/dist/utility/blueprint/node.js +28 -1
  268. package/dist/utility/blueprint/node.js.map +1 -1
  269. package/dist/utility/bounding_volume.js.map +1 -1
  270. package/dist/utility/debug.js.map +1 -1
  271. package/dist/utility/draco/decoder.js.map +1 -1
  272. package/dist/utility/misc.js +1 -1
  273. package/dist/utility/misc.js.map +1 -1
  274. package/dist/utility/panorama.js.map +1 -1
  275. package/dist/utility/pmrem.js.map +1 -1
  276. package/dist/utility/rendermipmap.js.map +1 -1
  277. package/dist/utility/serialization/json.js +19 -15
  278. package/dist/utility/serialization/json.js.map +1 -1
  279. package/dist/utility/serialization/manager.js +89 -22
  280. package/dist/utility/serialization/manager.js.map +1 -1
  281. package/dist/utility/serialization/scene/animation.js +23 -21
  282. package/dist/utility/serialization/scene/animation.js.map +1 -1
  283. package/dist/utility/serialization/scene/batch.js +4 -3
  284. package/dist/utility/serialization/scene/batch.js.map +1 -1
  285. package/dist/utility/serialization/scene/camera.js +97 -9
  286. package/dist/utility/serialization/scene/camera.js.map +1 -1
  287. package/dist/utility/serialization/scene/common.js +102 -28
  288. package/dist/utility/serialization/scene/common.js.map +1 -1
  289. package/dist/utility/serialization/scene/light.js +14 -12
  290. package/dist/utility/serialization/scene/light.js.map +1 -1
  291. package/dist/utility/serialization/scene/material.js +154 -26
  292. package/dist/utility/serialization/scene/material.js.map +1 -1
  293. package/dist/utility/serialization/scene/mesh.js +71 -100
  294. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  295. package/dist/utility/serialization/scene/misc.js +3 -2
  296. package/dist/utility/serialization/scene/misc.js.map +1 -1
  297. package/dist/utility/serialization/scene/node.js +42 -9
  298. package/dist/utility/serialization/scene/node.js.map +1 -1
  299. package/dist/utility/serialization/scene/particle.js +7 -5
  300. package/dist/utility/serialization/scene/particle.js.map +1 -1
  301. package/dist/utility/serialization/scene/primitive.js +18 -15
  302. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  303. package/dist/utility/serialization/scene/scene.js +3 -2
  304. package/dist/utility/serialization/scene/scene.js.map +1 -1
  305. package/dist/utility/serialization/scene/sprite.js +164 -0
  306. package/dist/utility/serialization/scene/sprite.js.map +1 -0
  307. package/dist/utility/serialization/scene/terrain.js +8 -6
  308. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  309. package/dist/utility/serialization/scene/water.js +11 -9
  310. package/dist/utility/serialization/scene/water.js.map +1 -1
  311. package/dist/utility/serialization/types.js +6 -0
  312. package/dist/utility/serialization/types.js.map +1 -0
  313. package/dist/utility/shprojector.js.map +1 -1
  314. package/dist/utility/textures/ggxlut.js.map +1 -1
  315. package/dist/utility/textures/gradientnoise.js.map +1 -1
  316. package/dist/utility/textures/randomnoise.js.map +1 -1
  317. package/dist/values.js +14 -14
  318. package/dist/values.js.map +1 -1
  319. package/package.json +80 -80
@@ -1 +1 @@
1
- {"version":3,"file":"mesh.js","sources":["../../../../src/utility/serialization/scene/mesh.ts"],"sourcesContent":["import { base64ToUint8Array, uint8ArrayToBase64, Vector2, Vector3, Vector4 } from '@zephyr3d/base';\r\nimport { getEngine } from '../../../app/api';\r\nimport { MeshMaterial } from '../../../material/meshmaterial';\r\nimport { GraphNode, Mesh, type SceneNode } from '../../../scene';\r\nimport type { SerializableClass } from '../types';\r\nimport { BoundingBox } from '../../bounding_volume';\r\n\r\nconst meshInstanceClsMap: Map<\r\n {\r\n new (...args: any[]): MeshMaterial;\r\n },\r\n { C: { new (m: MeshMaterial) }; S: SerializableClass }\r\n> = new Map();\r\n\r\n/** @internal */\r\nexport function getMeshMaterialInstanceUniformsClass(cls: {\r\n new (...args: any[]): MeshMaterial;\r\n}): SerializableClass {\r\n let info = meshInstanceClsMap.get(cls);\r\n if (!info) {\r\n class C {\r\n materialId: string;\r\n constructor(public material: MeshMaterial) {\r\n this.materialId = getEngine().resourceManager.getAssetId(material.coreMaterial) ?? '';\r\n }\r\n }\r\n const S: SerializableClass = {\r\n ctor: C,\r\n name: `${cls.name}InstanceUniforms`,\r\n async createFunc(_ctx, init) {\r\n const material = await getEngine().resourceManager.fetchMaterial<MeshMaterial>(init);\r\n return { obj: new C(material.createInstance()) };\r\n },\r\n getInitParams(obj: C) {\r\n return obj.materialId;\r\n },\r\n getProps() {\r\n return (cls as typeof MeshMaterial).INSTANCE_UNIFORMS.filter((u) => !!u.name).map((u) => ({\r\n name: u.name,\r\n type: u.type,\r\n get(this: C, value) {\r\n const val = this.material[u.prop];\r\n if (u.type === 'float') {\r\n value.num[0] = val;\r\n } else if (u.type === 'vec2') {\r\n value.num[0] = val.x;\r\n value.num[1] = val.y;\r\n } else if (u.type === 'vec3' || u.type === 'rgb') {\r\n value.num[0] = val.x;\r\n value.num[1] = val.y;\r\n value.num[2] = val.z;\r\n } else if (u.type === 'vec4' || u.type === 'rgba') {\r\n value.num[0] = val.x;\r\n value.num[1] = val.y;\r\n value.num[2] = val.z;\r\n value.num[3] = val.w;\r\n }\r\n },\r\n set(this: C, value) {\r\n if (u.type === 'float') {\r\n this.material[u.prop] = value.num[0];\r\n } else if (u.type === 'vec2') {\r\n this.material[u.prop] = new Vector2(value.num[0], value.num[1]);\r\n } else if (u.type === 'vec3' || u.type === 'rgb') {\r\n this.material[u.prop] = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n } else if (u.type === 'vec4' || u.type === 'rgba') {\r\n this.material[u.prop] = new Vector4(value.num[0], value.num[1], value.num[2], value.num[3]);\r\n }\r\n }\r\n }));\r\n }\r\n };\r\n info = { C, S };\r\n meshInstanceClsMap.set(cls, info);\r\n }\r\n return info.S;\r\n}\r\n/** @internal */\r\nexport function getMeshClass(): SerializableClass {\r\n return {\r\n ctor: Mesh,\r\n name: 'Mesh',\r\n parent: GraphNode,\r\n noTitle: true,\r\n createFunc(ctx: SceneNode) {\r\n const node = new Mesh(ctx.scene);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return [\r\n {\r\n name: 'CastShadow',\r\n type: 'bool',\r\n default: false,\r\n get(this: Mesh, value) {\r\n value.bool[0] = this.castShadow;\r\n },\r\n set(this: Mesh, value) {\r\n this.castShadow = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'SkinnedBoundingInfo',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: Mesh, value) {\r\n if (this.skinnedBoundingInfo) {\r\n const arr = new Float32Array(24 + 24 + 6 * 3);\r\n arr.set(this.skinnedBoundingInfo.boundingVertexBlendIndices, 0);\r\n arr.set(this.skinnedBoundingInfo.boundingVertexJointWeights, 24);\r\n for (let i = 0; i < 6; i++) {\r\n arr.set(this.skinnedBoundingInfo.boundingVertices[i], 24 + 24 + i * 3);\r\n }\r\n value.str[0] = uint8ArrayToBase64(new Uint8Array(arr.buffer));\r\n } else {\r\n value.str[0] = '';\r\n }\r\n },\r\n set(this: Mesh, value) {\r\n if (value.str[0]) {\r\n const buf = new Float32Array(base64ToUint8Array(value.str[0]).buffer);\r\n const boundingVertexBlendIndices = buf.subarray(0, 24);\r\n const boundingVertexJointWeights = buf.subarray(24, 48);\r\n const boundingVertices: Vector3[] = [];\r\n for (let i = 0; i < 6; i++) {\r\n boundingVertices.push(new Vector3(buf.subarray(48 + i * 3, 48 + (i + 1) * 3)));\r\n }\r\n this.setSkinnedBoundingInfo({\r\n boundingVertexBlendIndices,\r\n boundingVertexJointWeights,\r\n boundingVertices,\r\n boundingBox: new BoundingBox()\r\n });\r\n } else {\r\n this.setSkinnedBoundingInfo(null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Skeleton',\r\n type: 'string',\r\n isHidden() {\r\n return false;\r\n },\r\n get(this: Mesh, value) {\r\n value.str[0] = this.skeletonName;\r\n },\r\n set(this: Mesh, value) {\r\n this.skeletonName = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'MorphData',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n async get(this: Mesh, value) {\r\n const morphData = this.getMorphData();\r\n if (morphData) {\r\n const buffer = new ArrayBuffer(4 + 4 + 4 * 4 * morphData.width * morphData.height);\r\n const dataView = new DataView(buffer);\r\n dataView.setUint32(0, morphData.width, true);\r\n dataView.setUint32(4, morphData.height, true);\r\n new Float32Array(buffer, 8, 4 * morphData.width * morphData.height).set(morphData.data);\r\n value.str[0] = uint8ArrayToBase64(new Uint8Array(buffer));\r\n } else {\r\n value.str[0] = '';\r\n }\r\n },\r\n set(this: Mesh, value) {\r\n if (value.str[0]) {\r\n const data = base64ToUint8Array(value.str[0]);\r\n const dataView = new DataView(data.buffer);\r\n const width = dataView.getUint32(0, true);\r\n const height = dataView.getUint32(4, true);\r\n const pixels = new Float32Array(data.buffer, 8, 4 * width * height);\r\n this.setMorphData({ width, height, data: pixels });\r\n } else {\r\n this.setMorphData(null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'MorphInfo',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n async get(this: Mesh, value) {\r\n const morphInfo = this.getMorphInfo();\r\n if (morphInfo) {\r\n const data = new Uint8Array(\r\n morphInfo.data.buffer,\r\n morphInfo.data.byteOffset,\r\n morphInfo.data.byteLength\r\n );\r\n value.str[0] = uint8ArrayToBase64(data);\r\n } else {\r\n value.str[0] = '';\r\n }\r\n },\r\n set(this: Mesh, value) {\r\n if (value.str[0]) {\r\n const data = base64ToUint8Array(value.str[0]);\r\n this.setMorphInfo({ data });\r\n } else {\r\n this.setMorphInfo(null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'MorphBoundingBox',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: Mesh, value) {\r\n value.str[0] = '';\r\n if (this.getMorphData()) {\r\n const box = this.getAnimatedBoundingBox();\r\n if (box) {\r\n const data = new Float32Array([...box.minPoint, ...box.maxPoint]);\r\n value.str[0] = uint8ArrayToBase64(new Uint8Array(data.buffer));\r\n }\r\n }\r\n },\r\n set(this: Mesh, value) {\r\n if (value.str[0]) {\r\n const data = new Float32Array(base64ToUint8Array(value.str[0]).buffer);\r\n const bbox = new BoundingBox();\r\n bbox.minPoint.setXYZ(data[0], data[1], data[2]);\r\n bbox.maxPoint.setXYZ(data[3], data[4], data[5]);\r\n this.setAnimatedBoundingBox(bbox);\r\n } else {\r\n this.setAnimatedBoundingBox(null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Primitive',\r\n type: 'object',\r\n options: {\r\n mimeTypes: ['application/vnd.zephyr3d.mesh+json']\r\n },\r\n get(this: Mesh, value) {\r\n value.str[0] = this.primitive ? getEngine().resourceManager.getAssetId(this.primitive) : '';\r\n },\r\n async set(this: Mesh, value) {\r\n if (value?.str[0]) {\r\n const primitive = await getEngine().resourceManager.fetchPrimitive(value.str[0]);\r\n if (primitive) {\r\n this.primitive = primitive;\r\n } else {\r\n console.error(`Primitive not found: ${value.str[0]}`);\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'Material',\r\n type: 'object',\r\n options: {\r\n mimeTypes: ['application/vnd.zephyr3d.material+json']\r\n },\r\n get(this: Mesh, value) {\r\n const m = this.material?.coreMaterial;\r\n value.str[0] = getEngine().resourceManager.getAssetId(m) ?? '';\r\n },\r\n async set(this: Mesh, value) {\r\n if (value?.str[0]) {\r\n const material = await getEngine().resourceManager.fetchMaterial<MeshMaterial>(value.str[0]);\r\n if (material) {\r\n this.material = material;\r\n } else {\r\n console.error(`Material not found: ${value.str[0]}`);\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'MaterialObject',\r\n type: 'object',\r\n isPersistent() {\r\n return false;\r\n },\r\n options: {\r\n objectTypes: [MeshMaterial]\r\n },\r\n get(this: Mesh, value) {\r\n value.object[0] = this.material ?? null;\r\n }\r\n },\r\n {\r\n name: 'Geometry Instance',\r\n type: 'bool',\r\n get(this: Mesh, value) {\r\n value.bool[0] = !!this.material?.$isInstance;\r\n },\r\n set(this: Mesh, value) {\r\n this.material = value.bool[0] ? this.material?.createInstance() : this.material?.coreMaterial;\r\n }\r\n },\r\n {\r\n name: 'MaterialInstanceUniforms',\r\n type: 'object',\r\n phase: 1,\r\n options: {\r\n objectTypes: []\r\n },\r\n isHidden(this: Mesh) {\r\n return this.material && !this.material?.$isInstance;\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: Mesh, value) {\r\n const C = this.material?.$isInstance\r\n ? meshInstanceClsMap.get(this.material.coreMaterial.constructor as typeof MeshMaterial)\r\n : null;\r\n value.object[0] = C ? new C.C(this.material) : null;\r\n },\r\n set(this: Mesh, value) {\r\n if (value.object[0]) {\r\n this.material = (value.object[0] as any)?.material;\r\n }\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n}\r\n"],"names":["meshInstanceClsMap","Map","getMeshMaterialInstanceUniformsClass","cls","info","get","C","materialId","material","getEngine","resourceManager","getAssetId","coreMaterial","S","ctor","name","createFunc","_ctx","init","fetchMaterial","obj","createInstance","getInitParams","getProps","INSTANCE_UNIFORMS","filter","u","map","type","value","val","prop","num","x","y","z","w","set","Vector2","Vector3","Vector4","getMeshClass","Mesh","parent","GraphNode","noTitle","ctx","node","scene","default","bool","castShadow","isHidden","skinnedBoundingInfo","arr","Float32Array","boundingVertexBlendIndices","boundingVertexJointWeights","i","boundingVertices","str","uint8ArrayToBase64","Uint8Array","buffer","buf","base64ToUint8Array","subarray","push","setSkinnedBoundingInfo","boundingBox","BoundingBox","skeletonName","morphData","getMorphData","ArrayBuffer","width","height","dataView","DataView","setUint32","data","getUint32","pixels","setMorphData","morphInfo","getMorphInfo","byteOffset","byteLength","setMorphInfo","box","getAnimatedBoundingBox","minPoint","maxPoint","bbox","setXYZ","setAnimatedBoundingBox","options","mimeTypes","primitive","fetchPrimitive","console","error","m","isPersistent","objectTypes","MeshMaterial","object","$isInstance","phase","isNullable"],"mappings":"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"}
1
+ {"version":3,"file":"mesh.js","sources":["../../../../src/utility/serialization/scene/mesh.ts"],"sourcesContent":["import { base64ToUint8Array, uint8ArrayToBase64, Vector3 } from '@zephyr3d/base';\r\nimport { getEngine } from '../../../app/api';\r\nimport type { MeshMaterial } from '../../../material/meshmaterial';\r\nimport { GraphNode, Mesh, type SceneNode } from '../../../scene';\r\nimport { defineProps, type SerializableClass } from '../types';\r\nimport { BoundingBox } from '../../bounding_volume';\r\nimport { meshInstanceClsMap } from './common';\r\nimport { JSONData } from '../json';\r\n\r\n/** @internal */\r\nexport function getMeshClass(): SerializableClass {\r\n return {\r\n ctor: Mesh,\r\n name: 'Mesh',\r\n parent: GraphNode,\r\n noTitle: true,\r\n createFunc(ctx: SceneNode) {\r\n const node = new Mesh(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'CastShadow',\r\n type: 'bool',\r\n default: false,\r\n get(this: Mesh, value) {\r\n value.bool[0] = this.castShadow;\r\n },\r\n set(this: Mesh, value) {\r\n this.castShadow = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'SkinnedBoundingInfo',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: Mesh, value) {\r\n if (this.skinnedBoundingInfo) {\r\n const arr = new Float32Array(24 + 24 + 6 * 3);\r\n arr.set(this.skinnedBoundingInfo.boundingVertexBlendIndices, 0);\r\n arr.set(this.skinnedBoundingInfo.boundingVertexJointWeights, 24);\r\n for (let i = 0; i < 6; i++) {\r\n arr.set(this.skinnedBoundingInfo.boundingVertices[i], 24 + 24 + i * 3);\r\n }\r\n value.str[0] = uint8ArrayToBase64(new Uint8Array(arr.buffer));\r\n } else {\r\n value.str[0] = '';\r\n }\r\n },\r\n set(this: Mesh, value) {\r\n if (value.str[0]) {\r\n const buf = new Float32Array(base64ToUint8Array(value.str[0]).buffer);\r\n const boundingVertexBlendIndices = buf.subarray(0, 24);\r\n const boundingVertexJointWeights = buf.subarray(24, 48);\r\n const boundingVertices: Vector3[] = [];\r\n for (let i = 0; i < 6; i++) {\r\n boundingVertices.push(new Vector3(buf.subarray(48 + i * 3, 48 + (i + 1) * 3)));\r\n }\r\n this.setSkinnedBoundingInfo({\r\n boundingVertexBlendIndices,\r\n boundingVertexJointWeights,\r\n boundingVertices,\r\n boundingBox: new BoundingBox()\r\n });\r\n } else {\r\n this.setSkinnedBoundingInfo(null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Skeleton',\r\n type: 'string',\r\n isHidden() {\r\n return false;\r\n },\r\n get(this: Mesh, value) {\r\n value.str[0] = this.skeletonName;\r\n },\r\n set(this: Mesh, value) {\r\n this.skeletonName = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'MorphData',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n async get(this: Mesh, value) {\r\n const morphData = this.getMorphData();\r\n if (morphData) {\r\n const buffer = new ArrayBuffer(4 + 4 + 4 * 4 * morphData.width * morphData.height);\r\n const dataView = new DataView(buffer);\r\n dataView.setUint32(0, morphData.width, true);\r\n dataView.setUint32(4, morphData.height, true);\r\n new Float32Array(buffer, 8, 4 * morphData.width * morphData.height).set(morphData.data);\r\n value.str[0] = uint8ArrayToBase64(new Uint8Array(buffer));\r\n } else {\r\n value.str[0] = '';\r\n }\r\n },\r\n set(this: Mesh, value) {\r\n if (value.str[0]) {\r\n const data = base64ToUint8Array(value.str[0]);\r\n const dataView = new DataView(data.buffer);\r\n const width = dataView.getUint32(0, true);\r\n const height = dataView.getUint32(4, true);\r\n const pixels = new Float32Array(data.buffer, 8, 4 * width * height);\r\n this.setMorphData({ width, height, data: pixels });\r\n } else {\r\n this.setMorphData(null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'MorphTargets',\r\n type: 'object',\r\n options: { objectTypes: [JSONData] },\r\n isPersistent() {\r\n return false;\r\n },\r\n isHidden(this: Mesh) {\r\n return !this.getMorphInfo();\r\n },\r\n get(this: Mesh, value) {\r\n const morphInfo = this.getMorphInfo()!;\r\n const numTargets = morphInfo.data[3];\r\n const data: Record<string, number> = {};\r\n for (let i = 0; i < numTargets; i++) {\r\n const name = Object.keys(morphInfo.names).find((key) => morphInfo.names![key] === i);\r\n if (name) {\r\n Object.defineProperty(data, name, {\r\n enumerable: true,\r\n configurable: true,\r\n get: () => this.getMorphWeight(name),\r\n set: (v) => this.setMorphWeight(name, v)\r\n });\r\n }\r\n }\r\n value.object[0] = new JSONData(null, data);\r\n }\r\n },\r\n {\r\n name: 'MorphInfo',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: Mesh, value) {\r\n const morphInfo = this.getMorphInfo();\r\n if (morphInfo) {\r\n const data = new Uint8Array(\r\n morphInfo.data.buffer,\r\n morphInfo.data.byteOffset,\r\n morphInfo.data.byteLength\r\n );\r\n value.str[0] = JSON.stringify({ data: uint8ArrayToBase64(data), names: morphInfo.names });\r\n } else {\r\n value.str[0] = '';\r\n }\r\n },\r\n set(this: Mesh, value) {\r\n if (value.str[0]) {\r\n try {\r\n const info = JSON.parse(value.str[0]);\r\n const data = new Float32Array(base64ToUint8Array(info.data).buffer);\r\n const names = info.names;\r\n this.setMorphInfo({ data, names });\r\n } catch {\r\n const data = new Float32Array(base64ToUint8Array(value.str[0]).buffer);\r\n const names: Record<string, number> = {};\r\n for (let i = 0; i < data[3]; i++) {\r\n names[`Target${i}`] = i;\r\n }\r\n this.setMorphInfo({ data, names });\r\n }\r\n } else {\r\n this.setMorphInfo(null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'MorphBoundingBox',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: Mesh, value) {\r\n value.str[0] = '';\r\n if (this.getMorphData()) {\r\n const box = this.getAnimatedBoundingBox();\r\n if (box) {\r\n const data = new Float32Array([...box.minPoint, ...box.maxPoint]);\r\n value.str[0] = uint8ArrayToBase64(new Uint8Array(data.buffer));\r\n }\r\n }\r\n },\r\n set(this: Mesh, value) {\r\n if (value.str[0]) {\r\n const data = new Float32Array(base64ToUint8Array(value.str[0]).buffer);\r\n const bbox = new BoundingBox();\r\n bbox.minPoint.setXYZ(data[0], data[1], data[2]);\r\n bbox.maxPoint.setXYZ(data[3], data[4], data[5]);\r\n this.setAnimatedBoundingBox(bbox);\r\n } else {\r\n this.setAnimatedBoundingBox(null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Primitive',\r\n type: 'object',\r\n options: {\r\n mimeTypes: ['application/vnd.zephyr3d.mesh+json']\r\n },\r\n get(this: Mesh, value) {\r\n value.str[0] = this.primitive\r\n ? (getEngine().resourceManager.getAssetId(this.primitive) ?? '')\r\n : '';\r\n },\r\n async set(this: Mesh, value) {\r\n if (value?.str[0]) {\r\n const primitive = await getEngine().resourceManager.fetchPrimitive(value.str[0]);\r\n if (primitive) {\r\n this.primitive = primitive;\r\n } else {\r\n console.error(`Primitive not found: ${value.str[0]}`);\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'Material',\r\n type: 'object',\r\n options: {\r\n mimeTypes: ['application/vnd.zephyr3d.material+json']\r\n },\r\n get(this: Mesh, value) {\r\n const m = this.material?.coreMaterial;\r\n value.str[0] = getEngine().resourceManager.getAssetId(m) ?? '';\r\n },\r\n async set(this: Mesh, value) {\r\n if (value?.str[0]) {\r\n const material = await getEngine().resourceManager.fetchMaterial<MeshMaterial>(value.str[0]);\r\n if (material) {\r\n this.material = material;\r\n } else {\r\n console.error(`Material not found: ${value.str[0]}`);\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'Geometry Instance',\r\n type: 'bool',\r\n get(this: Mesh, value) {\r\n value.bool[0] = !!this.material?.$isInstance;\r\n },\r\n set(this: Mesh, value) {\r\n this.material = value.bool[0]\r\n ? (this.material?.createInstance() ?? null)\r\n : (this.material?.coreMaterial ?? null);\r\n }\r\n },\r\n {\r\n name: 'MaterialInstanceUniforms',\r\n type: 'object',\r\n phase: 1,\r\n options: {\r\n objectTypes: []\r\n },\r\n isHidden(this: Mesh) {\r\n return !!this.material && !this.material?.$isInstance;\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: Mesh, value) {\r\n const C = this.material?.$isInstance\r\n ? meshInstanceClsMap.get(this.material.coreMaterial.constructor as typeof MeshMaterial)\r\n : null;\r\n value.object[0] = C ? new C.C(this.material!) : null;\r\n },\r\n set(this: Mesh, value) {\r\n if (value.object[0]) {\r\n this.material = (value.object[0] as any)?.material;\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["getMeshClass","ctor","Mesh","name","parent","GraphNode","noTitle","createFunc","ctx","node","scene","obj","getProps","defineProps","type","default","get","value","bool","castShadow","set","isHidden","skinnedBoundingInfo","arr","Float32Array","boundingVertexBlendIndices","boundingVertexJointWeights","i","boundingVertices","str","uint8ArrayToBase64","Uint8Array","buffer","buf","base64ToUint8Array","subarray","push","Vector3","setSkinnedBoundingInfo","boundingBox","BoundingBox","skeletonName","morphData","getMorphData","ArrayBuffer","width","height","dataView","DataView","setUint32","data","getUint32","pixels","setMorphData","options","objectTypes","JSONData","isPersistent","getMorphInfo","morphInfo","numTargets","Object","keys","names","find","key","defineProperty","enumerable","configurable","getMorphWeight","v","setMorphWeight","object","byteOffset","byteLength","JSON","stringify","info","parse","setMorphInfo","box","getAnimatedBoundingBox","minPoint","maxPoint","bbox","setXYZ","setAnimatedBoundingBox","mimeTypes","primitive","getEngine","resourceManager","getAssetId","fetchPrimitive","console","error","m","material","coreMaterial","fetchMaterial","$isInstance","createInstance","phase","isNullable","C","meshInstanceClsMap"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { AABB } from '@zephyr3d/base';
2
+ import { defineProps } from '../types.js';
2
3
 
3
4
  /** @internal */ function getAABBClass() {
4
5
  return {
5
6
  ctor: AABB,
6
7
  name: 'AABB',
7
8
  getProps () {
8
- return [
9
+ return defineProps([
9
10
  {
10
11
  name: 'Min',
11
12
  type: 'vec3',
@@ -30,7 +31,7 @@ import { AABB } from '@zephyr3d/base';
30
31
  this.maxPoint.setXYZ(value.num[0], value.num[1], value.num[2]);
31
32
  }
32
33
  }
33
- ];
34
+ ]);
34
35
  }
35
36
  };
36
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"misc.js","sources":["../../../../src/utility/serialization/scene/misc.ts"],"sourcesContent":["import { AABB } from '@zephyr3d/base';\r\nimport type { SerializableClass } from '../types';\r\n\r\n/** @internal */\r\nexport function getAABBClass(): SerializableClass {\r\n return {\r\n ctor: AABB,\r\n name: 'AABB',\r\n getProps() {\r\n return [\r\n {\r\n name: 'Min',\r\n type: 'vec3',\r\n get(this: AABB, value) {\r\n value.num[0] = this.minPoint.x;\r\n value.num[1] = this.minPoint.y;\r\n value.num[2] = this.minPoint.z;\r\n },\r\n set(this: AABB, value) {\r\n this.minPoint.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Max',\r\n type: 'vec3',\r\n get(this: AABB, value) {\r\n value.num[0] = this.maxPoint.x;\r\n value.num[1] = this.maxPoint.y;\r\n value.num[2] = this.maxPoint.z;\r\n },\r\n set(this: AABB, value) {\r\n this.maxPoint.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n}\r\n"],"names":["getAABBClass","ctor","AABB","name","getProps","type","get","value","num","minPoint","x","y","z","set","setXYZ","maxPoint"],"mappings":";;AAGA,iBACO,SAASA,YAAAA,GAAAA;IACd,OAAO;QACLC,IAAMC,EAAAA,IAAAA;QACNC,IAAM,EAAA,MAAA;AACNC,QAAAA,QAAAA,CAAAA,GAAAA;YACE,OAAO;AACL,gBAAA;oBACED,IAAM,EAAA,KAAA;oBACNE,IAAM,EAAA,MAAA;AACNC,oBAAAA,GAAAA,CAAAA,CAAgBC,KAAK,EAAA;wBACnBA,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,QAAQ,CAACC,CAAC;wBAC9BH,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,QAAQ,CAACE,CAAC;wBAC9BJ,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,QAAQ,CAACG,CAAC;AAChC,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAAgBN,KAAK,EAAA;AACnB,wBAAA,IAAI,CAACE,QAAQ,CAACK,MAAM,CAACP,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,EAAED,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,EAAED,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAC/D;AACF,iBAAA;AACA,gBAAA;oBACEL,IAAM,EAAA,KAAA;oBACNE,IAAM,EAAA,MAAA;AACNC,oBAAAA,GAAAA,CAAAA,CAAgBC,KAAK,EAAA;wBACnBA,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACO,QAAQ,CAACL,CAAC;wBAC9BH,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACO,QAAQ,CAACJ,CAAC;wBAC9BJ,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACO,QAAQ,CAACH,CAAC;AAChC,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAAgBN,KAAK,EAAA;AACnB,wBAAA,IAAI,CAACQ,QAAQ,CAACD,MAAM,CAACP,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,EAAED,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,EAAED,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAC/D;AACF;AACD,aAAA;AACH;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"misc.js","sources":["../../../../src/utility/serialization/scene/misc.ts"],"sourcesContent":["import { AABB } from '@zephyr3d/base';\r\nimport { defineProps, type SerializableClass } from '../types';\r\n\r\n/** @internal */\r\nexport function getAABBClass(): SerializableClass {\r\n return {\r\n ctor: AABB,\r\n name: 'AABB',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Min',\r\n type: 'vec3',\r\n get(this: AABB, value) {\r\n value.num[0] = this.minPoint.x;\r\n value.num[1] = this.minPoint.y;\r\n value.num[2] = this.minPoint.z;\r\n },\r\n set(this: AABB, value) {\r\n this.minPoint.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Max',\r\n type: 'vec3',\r\n get(this: AABB, value) {\r\n value.num[0] = this.maxPoint.x;\r\n value.num[1] = this.maxPoint.y;\r\n value.num[2] = this.maxPoint.z;\r\n },\r\n set(this: AABB, value) {\r\n this.maxPoint.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["getAABBClass","ctor","AABB","name","getProps","defineProps","type","get","value","num","minPoint","x","y","z","set","setXYZ","maxPoint"],"mappings":";;;AAGA,iBACO,SAASA,YAAAA,GAAAA;IACd,OAAO;QACLC,IAAMC,EAAAA,IAAAA;QACNC,IAAM,EAAA,MAAA;AACNC,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACEF,IAAM,EAAA,KAAA;oBACNG,IAAM,EAAA,MAAA;AACNC,oBAAAA,GAAAA,CAAAA,CAAgBC,KAAK,EAAA;wBACnBA,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,QAAQ,CAACC,CAAC;wBAC9BH,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,QAAQ,CAACE,CAAC;wBAC9BJ,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,QAAQ,CAACG,CAAC;AAChC,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAAgBN,KAAK,EAAA;AACnB,wBAAA,IAAI,CAACE,QAAQ,CAACK,MAAM,CAACP,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,EAAED,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,EAAED,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAC/D;AACF,iBAAA;AACA,gBAAA;oBACEN,IAAM,EAAA,KAAA;oBACNG,IAAM,EAAA,MAAA;AACNC,oBAAAA,GAAAA,CAAAA,CAAgBC,KAAK,EAAA;wBACnBA,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACO,QAAQ,CAACL,CAAC;wBAC9BH,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACO,QAAQ,CAACJ,CAAC;wBAC9BJ,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACO,QAAQ,CAACH,CAAC;AAChC,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAAgBN,KAAK,EAAA;AACnB,wBAAA,IAAI,CAACQ,QAAQ,CAACD,MAAM,CAACP,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,EAAED,KAAAA,CAAMC,GAAG,CAAC,CAAA,CAAE,EAAED,KAAMC,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAC/D;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;;;;"}
@@ -1,5 +1,6 @@
1
1
  import { SceneNode } from '../../../scene/scene_node.js';
2
2
  import { Scene } from '../../../scene/scene.js';
3
+ import { defineProps } from '../types.js';
3
4
  import { applyPatch, DRef, diff, ASSERT, radian2degree, degree2radian } from '@zephyr3d/base';
4
5
  import '../../../values.js';
5
6
  import '@zephyr3d/device';
@@ -10,11 +11,13 @@ import '../../../material/unlit.js';
10
11
  import '../../../material/particle.js';
11
12
  import '../../../material/meshmaterial.js';
12
13
  import '../../../material/grassmaterial.js';
13
- import '../../../material/terrainmaterial.js';
14
14
  import '../../../material/terrain-cm.js';
15
15
  import '../../../material/pbrmr.js';
16
16
  import '../../../material/pbrsg.js';
17
17
  import '../../../material/pbrblueprint.js';
18
+ import '../../../material/sprite.js';
19
+ import '../../../material/sprite_std.js';
20
+ import '../../blueprint/material/texture.js';
18
21
  import '../../../render/renderer.js';
19
22
  import '../../../render/primitive.js';
20
23
  import '../../../render/sky.js';
@@ -23,11 +26,10 @@ import '../../../shaders/atmosphere.js';
23
26
  import { GraphNode } from '../../../scene/graph_node.js';
24
27
  import '../../../shadow/shadowmapper.js';
25
28
  import '../../../scene/mesh.js';
29
+ import '../../../scene/basesprite.js';
26
30
  import '../../../scene/water.js';
27
31
  import '../../../scene/particlesys.js';
28
32
  import '../../../scene/batchgroup.js';
29
- import '../../../scene/terrain/patch.js';
30
- import '../../../scene/terrain/grass.js';
31
33
  import '../../../scene/terrain-cm/terrain-cm.js';
32
34
  import '../../../scene/terrain-cm/grass.js';
33
35
  import { AnimationClip } from '../../../animation/animation.js';
@@ -51,8 +53,10 @@ import { JSONData } from '../json.js';
51
53
  tmpNode.get().remove();
52
54
  tmpNode.get().prefabId = init.prefabId;
53
55
  const sceneNode = await manager.deserializeObject(tmpNode.get(), nodeData);
54
- sceneNode.prefabId = init.prefabId;
55
- sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;
56
+ if (sceneNode) {
57
+ sceneNode.prefabId = init.prefabId;
58
+ sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;
59
+ }
56
60
  tmpNode.dispose();
57
61
  return {
58
62
  obj: sceneNode,
@@ -69,7 +73,7 @@ import { JSONData } from '../json.js';
69
73
  },
70
74
  async getInitParams (obj, flags) {
71
75
  const prefabId = obj.prefabId;
72
- let patch;
76
+ let patch = undefined;
73
77
  if (prefabId) {
74
78
  try {
75
79
  obj.prefabId = '';
@@ -88,7 +92,7 @@ import { JSONData } from '../json.js';
88
92
  } : null;
89
93
  },
90
94
  getProps () {
91
- return [
95
+ return defineProps([
92
96
  {
93
97
  name: 'Id',
94
98
  type: 'string',
@@ -112,7 +116,9 @@ import { JSONData } from '../json.js';
112
116
  {
113
117
  name: 'Name',
114
118
  type: 'string',
115
- defaultValue: '',
119
+ getDefaultValue () {
120
+ return '';
121
+ },
116
122
  get (value) {
117
123
  value.str[0] = this.name;
118
124
  },
@@ -123,6 +129,11 @@ import { JSONData } from '../json.js';
123
129
  {
124
130
  name: 'Position',
125
131
  type: 'vec3',
132
+ default: [
133
+ 0,
134
+ 0,
135
+ 0
136
+ ],
126
137
  options: {
127
138
  animatable: true
128
139
  },
@@ -141,12 +152,20 @@ import { JSONData } from '../json.js';
141
152
  {
142
153
  name: 'Scale',
143
154
  type: 'vec3',
155
+ default: [
156
+ 1,
157
+ 1,
158
+ 1
159
+ ],
144
160
  options: {
145
161
  animatable: true
146
162
  },
147
163
  isPersistent () {
148
164
  return this.jointTypeS !== 'animated';
149
165
  },
166
+ isHidden () {
167
+ return this.isCamera();
168
+ },
150
169
  get (value) {
151
170
  value.num[0] = this.scale.x;
152
171
  value.num[1] = this.scale.y;
@@ -159,6 +178,11 @@ import { JSONData } from '../json.js';
159
178
  {
160
179
  name: 'Rotation',
161
180
  type: 'vec3',
181
+ default: [
182
+ 0,
183
+ 0,
184
+ 0
185
+ ],
162
186
  options: {
163
187
  animatable: true,
164
188
  edit: 'quaternion'
@@ -166,6 +190,9 @@ import { JSONData } from '../json.js';
166
190
  isPersistent () {
167
191
  return false;
168
192
  },
193
+ isHidden () {
194
+ return this.isCamera() && this.isOrtho();
195
+ },
169
196
  get (value) {
170
197
  const zyx = this.rotation.toEulerAngles();
171
198
  value.num[0] = Math.round(radian2degree(zyx.x));
@@ -179,6 +206,12 @@ import { JSONData } from '../json.js';
179
206
  {
180
207
  name: 'QuatRotation',
181
208
  type: 'vec4',
209
+ default: [
210
+ 0,
211
+ 0,
212
+ 0,
213
+ 1
214
+ ],
182
215
  isHidden () {
183
216
  return true;
184
217
  },
@@ -365,7 +398,7 @@ import { JSONData } from '../json.js';
365
398
  this.metaData = value?.object[0]?.data ?? null;
366
399
  }
367
400
  }
368
- ];
401
+ ]);
369
402
  }
370
403
  };
371
404
  }
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sources":["../../../../src/utility/serialization/scene/node.ts"],"sourcesContent":["import { SceneNode } from '../../../scene/scene_node';\r\nimport type { SceneNodeVisible } from '../../../scene/scene_node';\r\nimport { Scene } from '../../../scene/scene';\r\nimport type { SerializableClass } from '../types';\r\nimport type { DiffPatch, DiffValue } from '@zephyr3d/base';\r\nimport { applyPatch, ASSERT, degree2radian, diff, DRef, radian2degree } from '@zephyr3d/base';\r\nimport { GraphNode } from '../../../scene';\r\nimport type { ResourceManager } from '../manager';\r\nimport { AnimationClip, NodeRotationTrack, NodeScaleTrack, NodeTranslationTrack } from '../../../animation';\r\nimport { JSONData } from '../json';\r\n\r\n/** @internal */\r\nexport function getSceneNodeClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: SceneNode,\r\n name: 'SceneNode',\r\n async createFunc(ctx: Scene | SceneNode, init?: { prefabId: string; patch: DiffPatch }) {\r\n const scene = ctx instanceof Scene ? ctx : ctx.scene;\r\n if (init) {\r\n const prefabData = (await manager.loadPrefabContent(init.prefabId)).data as DiffValue;\r\n const nodeData = applyPatch(prefabData, init.patch);\r\n const tmpNode = new DRef(new SceneNode(scene));\r\n tmpNode.get().remove();\r\n tmpNode.get().prefabId = init.prefabId;\r\n const sceneNode = await manager.deserializeObject<SceneNode>(tmpNode.get(), nodeData as object);\r\n sceneNode.prefabId = init.prefabId;\r\n sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;\r\n tmpNode.dispose();\r\n return { obj: sceneNode, loadProps: false };\r\n }\r\n const node = new SceneNode(scene);\r\n if (ctx instanceof SceneNode) {\r\n node.parent = ctx;\r\n }\r\n return { obj: node };\r\n },\r\n async getInitParams(obj: SceneNode, flags) {\r\n const prefabId = obj.prefabId;\r\n let patch: DiffPatch;\r\n if (prefabId) {\r\n try {\r\n obj.prefabId = '';\r\n const prefabData = (await manager.loadPrefabContent(prefabId)).data as DiffValue;\r\n const nodeData = await manager.serializeObject(obj);\r\n patch = diff(prefabData, nodeData);\r\n ASSERT(diff(applyPatch(prefabData, patch), nodeData).length === 0, 'Patch test failed');\r\n } finally {\r\n obj.prefabId = prefabId;\r\n }\r\n flags.saveProps = false;\r\n }\r\n return prefabId\r\n ? {\r\n prefabId,\r\n patch\r\n }\r\n : null;\r\n },\r\n getProps() {\r\n return [\r\n {\r\n name: 'Id',\r\n type: 'string',\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.persistentId;\r\n },\r\n set(this: SceneNode, value) {\r\n this.persistentId = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'PrefabId',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.prefabId;\r\n }\r\n },\r\n {\r\n name: 'Name',\r\n type: 'string',\r\n defaultValue: '',\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: SceneNode, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Position',\r\n type: 'vec3',\r\n options: {\r\n animatable: true\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeT !== 'animated';\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.position.x;\r\n value.num[1] = this.position.y;\r\n value.num[2] = this.position.z;\r\n },\r\n set(this: SceneNode, value) {\r\n this.position.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Scale',\r\n type: 'vec3',\r\n options: {\r\n animatable: true\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeS !== 'animated';\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.scale.x;\r\n value.num[1] = this.scale.y;\r\n value.num[2] = this.scale.z;\r\n },\r\n set(this: SceneNode, value) {\r\n this.scale.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Rotation',\r\n type: 'vec3',\r\n options: {\r\n animatable: true,\r\n edit: 'quaternion'\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: SceneNode, value) {\r\n const zyx = this.rotation.toEulerAngles();\r\n value.num[0] = Math.round(radian2degree(zyx.x));\r\n value.num[1] = Math.round(radian2degree(zyx.y));\r\n value.num[2] = Math.round(radian2degree(zyx.z));\r\n },\r\n set(this: SceneNode, value) {\r\n this.rotation.fromEulerAngle(\r\n degree2radian(value.num[0]),\r\n degree2radian(value.num[1]),\r\n degree2radian(value.num[2])\r\n );\r\n }\r\n },\r\n {\r\n name: 'QuatRotation',\r\n type: 'vec4',\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeR !== 'animated';\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.rotation.x;\r\n value.num[1] = this.rotation.y;\r\n value.num[2] = this.rotation.z;\r\n value.num[3] = this.rotation.w;\r\n },\r\n set(this: SceneNode, value) {\r\n this.rotation.setXYZW(value.num[0], value.num[1], value.num[2], value.num[3]);\r\n }\r\n },\r\n {\r\n name: 'Pickable',\r\n type: 'bool',\r\n default: false,\r\n get(this: SceneNode, value) {\r\n value.bool[0] = this.pickable;\r\n },\r\n set(this: SceneNode, value) {\r\n this.pickable = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Visible',\r\n type: 'string',\r\n default: 'inherit',\r\n options: {\r\n enum: {\r\n labels: ['Visible', 'Hidden', 'Inherit'],\r\n values: ['visible', 'hidden', 'inherit']\r\n }\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.showState;\r\n },\r\n set(this: SceneNode, value) {\r\n this.showState = value.str[0] as SceneNodeVisible;\r\n }\r\n },\r\n {\r\n name: 'Children',\r\n type: 'object_array',\r\n phase: 0,\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object = [];\r\n for (const child of this.children) {\r\n if (!child.get().sealed) {\r\n value.object.push(child.get());\r\n }\r\n }\r\n },\r\n set(this: SceneNode, value) {\r\n for (let i = this.children.length - 1; i >= 0; i--) {\r\n const child = this.children[i].get();\r\n if (!value.object.includes(child) && !child.sealed) {\r\n child.remove();\r\n }\r\n }\r\n for (const child of value.object) {\r\n if (child instanceof SceneNode) {\r\n child.parent = this;\r\n } else {\r\n console.error(`Invalid scene node: ${child}`);\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'Animations',\r\n type: 'object_array',\r\n phase: 2,\r\n readonly: true,\r\n options: {\r\n objectTypes: [AnimationClip]\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n value.object = animationSet\r\n .getAnimationNames()\r\n .map((name) => animationSet.getAnimationClip(name));\r\n },\r\n set(this: SceneNode, value) {\r\n for (const ani of value.object) {\r\n const animation = ani as AnimationClip;\r\n for (const tracks of animation.tracks) {\r\n for (const track of tracks[1]) {\r\n if (!track.embedded) {\r\n animation.addTrack(tracks[0], track);\r\n if (tracks[0] instanceof SceneNode) {\r\n if (track instanceof NodeTranslationTrack) {\r\n tracks[0].jointTypeT = 'animated';\r\n } else if (track instanceof NodeScaleTrack) {\r\n tracks[0].jointTypeS = 'animated';\r\n } else if (track instanceof NodeRotationTrack) {\r\n tracks[0].jointTypeR = 'animated';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!manager.editorMode && animation.autoPlay) {\r\n this.animationSet.playAnimation(animation.name, { repeat: 0 });\r\n }\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const animationSet = this.animationSet;\r\n const name = animationSet.getAnimationNames()[index];\r\n const animation = animationSet.getAnimationClip(name);\r\n if (animation) {\r\n animationSet.deleteAnimation(name);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Skeletons',\r\n type: 'object_array',\r\n phase: 1,\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n value.object = animationSet.skeletons.map((v) => v.get());\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n animationSet.skeletons.forEach((v) => v.dispose());\r\n animationSet.skeletons.splice(0, animationSet.skeletons.length);\r\n animationSet.skeletons.push(...(value.object as any[]).map((v) => new DRef(v)));\r\n }\r\n },\r\n {\r\n name: 'Script',\r\n type: 'object',\r\n options: {\r\n mimeTypes: ['text/x-typescript']\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.script;\r\n },\r\n set(this: SceneNode, value) {\r\n this.script = value?.str?.[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'Metadata',\r\n type: 'object',\r\n options: { objectTypes: [JSONData] },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object[0] = this.metaData ? new JSONData(null, this.metaData) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n this.metaData = (value?.object[0] as JSONData)?.data ?? null;\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getGraphNodeClass(): SerializableClass {\r\n return {\r\n ctor: GraphNode,\r\n parent: SceneNode,\r\n name: 'GraphNode',\r\n createFunc(ctx: SceneNode) {\r\n const node = new GraphNode(ctx.scene);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n"],"names":["getSceneNodeClass","manager","ctor","SceneNode","name","createFunc","ctx","init","scene","Scene","prefabData","loadPrefabContent","prefabId","data","nodeData","applyPatch","patch","tmpNode","DRef","get","remove","sceneNode","deserializeObject","parent","rootNode","dispose","obj","loadProps","node","getInitParams","flags","serializeObject","diff","ASSERT","length","saveProps","getProps","type","value","str","persistentId","set","isHidden","defaultValue","options","animatable","isPersistent","jointTypeT","num","position","x","y","z","setXYZ","jointTypeS","scale","edit","zyx","rotation","toEulerAngles","Math","round","radian2degree","fromEulerAngle","degree2radian","jointTypeR","w","setXYZW","default","bool","pickable","enum","labels","values","showState","phase","object","child","children","sealed","push","i","includes","console","error","readonly","objectTypes","AnimationClip","animationSet","getAnimationNames","map","getAnimationClip","ani","animation","tracks","track","embedded","addTrack","NodeTranslationTrack","NodeScaleTrack","NodeRotationTrack","editorMode","autoPlay","playAnimation","repeat","delete","index","deleteAnimation","skeletons","v","forEach","splice","mimeTypes","isNullable","script","JSONData","metaData","getGraphNodeClass","GraphNode"],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sources":["../../../../src/utility/serialization/scene/node.ts"],"sourcesContent":["import { SceneNode } from '../../../scene/scene_node';\r\nimport type { SceneNodeVisible } from '../../../scene/scene_node';\r\nimport { Scene } from '../../../scene/scene';\r\nimport { defineProps, type SerializableClass } from '../types';\r\nimport type { DiffPatch, DiffValue } from '@zephyr3d/base';\r\nimport { applyPatch, ASSERT, degree2radian, diff, DRef, radian2degree } from '@zephyr3d/base';\r\nimport { GraphNode } from '../../../scene';\r\nimport type { ResourceManager } from '../manager';\r\nimport { AnimationClip, NodeRotationTrack, NodeScaleTrack, NodeTranslationTrack } from '../../../animation';\r\nimport { JSONData } from '../json';\r\n\r\n/** @internal */\r\nexport function getSceneNodeClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: SceneNode,\r\n name: 'SceneNode',\r\n async createFunc(ctx: Scene | SceneNode, init?: { prefabId: string; patch: DiffPatch }) {\r\n const scene = ctx instanceof Scene ? ctx : ctx.scene;\r\n if (init) {\r\n const prefabData = (await manager.loadPrefabContent(init.prefabId))!.data as DiffValue;\r\n const nodeData = applyPatch(prefabData, init.patch) as Record<string, unknown>;\r\n const tmpNode = new DRef(new SceneNode(scene));\r\n tmpNode.get()!.remove();\r\n tmpNode.get()!.prefabId = init.prefabId;\r\n const sceneNode = await manager.deserializeObject<SceneNode>(tmpNode.get(), nodeData);\r\n if (sceneNode) {\r\n sceneNode.prefabId = init.prefabId;\r\n sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;\r\n }\r\n tmpNode.dispose();\r\n return { obj: sceneNode, loadProps: false };\r\n }\r\n const node = new SceneNode(scene);\r\n if (ctx instanceof SceneNode) {\r\n node.parent = ctx;\r\n }\r\n return { obj: node };\r\n },\r\n async getInitParams(obj: SceneNode, flags) {\r\n const prefabId = obj.prefabId;\r\n let patch: DiffPatch | undefined = undefined;\r\n if (prefabId) {\r\n try {\r\n obj.prefabId = '';\r\n const prefabData = (await manager.loadPrefabContent(prefabId))!.data as DiffValue;\r\n const nodeData = await manager.serializeObject(obj);\r\n patch = diff(prefabData, nodeData);\r\n ASSERT(diff(applyPatch(prefabData, patch), nodeData).length === 0, 'Patch test failed');\r\n } finally {\r\n obj.prefabId = prefabId;\r\n }\r\n flags.saveProps = false;\r\n }\r\n return prefabId\r\n ? {\r\n prefabId,\r\n patch\r\n }\r\n : null;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Id',\r\n type: 'string',\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.persistentId;\r\n },\r\n set(this: SceneNode, value) {\r\n this.persistentId = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'PrefabId',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.prefabId;\r\n }\r\n },\r\n {\r\n name: 'Name',\r\n type: 'string',\r\n getDefaultValue() {\r\n return '';\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: SceneNode, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Position',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeT !== 'animated';\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.position.x;\r\n value.num[1] = this.position.y;\r\n value.num[2] = this.position.z;\r\n },\r\n set(this: SceneNode, value) {\r\n this.position.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Scale',\r\n type: 'vec3',\r\n default: [1, 1, 1],\r\n options: {\r\n animatable: true\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeS !== 'animated';\r\n },\r\n isHidden(this: SceneNode) {\r\n return this.isCamera();\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.scale.x;\r\n value.num[1] = this.scale.y;\r\n value.num[2] = this.scale.z;\r\n },\r\n set(this: SceneNode, value) {\r\n this.scale.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Rotation',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true,\r\n edit: 'quaternion'\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n isHidden(this: SceneNode) {\r\n return this.isCamera() && this.isOrtho();\r\n },\r\n get(this: SceneNode, value) {\r\n const zyx = this.rotation.toEulerAngles();\r\n value.num[0] = Math.round(radian2degree(zyx.x));\r\n value.num[1] = Math.round(radian2degree(zyx.y));\r\n value.num[2] = Math.round(radian2degree(zyx.z));\r\n },\r\n set(this: SceneNode, value) {\r\n this.rotation.fromEulerAngle(\r\n degree2radian(value.num[0]),\r\n degree2radian(value.num[1]),\r\n degree2radian(value.num[2])\r\n );\r\n }\r\n },\r\n {\r\n name: 'QuatRotation',\r\n type: 'vec4',\r\n default: [0, 0, 0, 1],\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.jointTypeR !== 'animated';\r\n },\r\n get(this: SceneNode, value) {\r\n value.num[0] = this.rotation.x;\r\n value.num[1] = this.rotation.y;\r\n value.num[2] = this.rotation.z;\r\n value.num[3] = this.rotation.w;\r\n },\r\n set(this: SceneNode, value) {\r\n this.rotation.setXYZW(value.num[0], value.num[1], value.num[2], value.num[3]);\r\n }\r\n },\r\n {\r\n name: 'Pickable',\r\n type: 'bool',\r\n default: false,\r\n get(this: SceneNode, value) {\r\n value.bool[0] = this.pickable;\r\n },\r\n set(this: SceneNode, value) {\r\n this.pickable = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Visible',\r\n type: 'string',\r\n default: 'inherit',\r\n options: {\r\n enum: {\r\n labels: ['Visible', 'Hidden', 'Inherit'],\r\n values: ['visible', 'hidden', 'inherit']\r\n }\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.showState;\r\n },\r\n set(this: SceneNode, value) {\r\n this.showState = value.str[0] as SceneNodeVisible;\r\n }\r\n },\r\n {\r\n name: 'Children',\r\n type: 'object_array',\r\n phase: 0,\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object = [];\r\n for (const child of this.children) {\r\n if (!child.get()!.sealed) {\r\n value.object.push(child.get());\r\n }\r\n }\r\n },\r\n set(this: SceneNode, value) {\r\n for (let i = this.children.length - 1; i >= 0; i--) {\r\n const child = this.children[i].get()!;\r\n if (!value.object.includes(child) && !child.sealed) {\r\n child.remove();\r\n }\r\n }\r\n for (const child of value.object) {\r\n if (child instanceof SceneNode) {\r\n child.parent = this;\r\n } else {\r\n console.error(`Invalid scene node: ${child}`);\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'Animations',\r\n type: 'object_array',\r\n phase: 2,\r\n readonly: true,\r\n options: {\r\n objectTypes: [AnimationClip]\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n value.object = animationSet\r\n .getAnimationNames()\r\n .map((name) => animationSet.getAnimationClip(name));\r\n },\r\n set(this: SceneNode, value) {\r\n for (const ani of value.object) {\r\n const animation = ani as AnimationClip;\r\n for (const tracks of animation.tracks) {\r\n for (const track of tracks[1]) {\r\n if (!track.embedded) {\r\n animation.addTrack(tracks[0], track);\r\n if (tracks[0] instanceof SceneNode) {\r\n if (track instanceof NodeTranslationTrack) {\r\n tracks[0].jointTypeT = 'animated';\r\n } else if (track instanceof NodeScaleTrack) {\r\n tracks[0].jointTypeS = 'animated';\r\n } else if (track instanceof NodeRotationTrack) {\r\n tracks[0].jointTypeR = 'animated';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!manager.editorMode && animation.autoPlay) {\r\n this.animationSet.playAnimation(animation.name, { repeat: 0 });\r\n }\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const animationSet = this.animationSet;\r\n const name = animationSet.getAnimationNames()[index];\r\n const animation = animationSet.getAnimationClip(name);\r\n if (animation) {\r\n animationSet.deleteAnimation(name);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Skeletons',\r\n type: 'object_array',\r\n phase: 1,\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n value.object = animationSet.skeletons.map((v) => v.get());\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n animationSet.skeletons.forEach((v) => v.dispose());\r\n animationSet.skeletons.splice(0, animationSet.skeletons.length);\r\n animationSet.skeletons.push(...(value.object as any[]).map((v) => new DRef(v)));\r\n }\r\n },\r\n {\r\n name: 'Script',\r\n type: 'object',\r\n options: {\r\n mimeTypes: ['text/x-typescript']\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = this.script;\r\n },\r\n set(this: SceneNode, value) {\r\n this.script = value?.str?.[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'Metadata',\r\n type: 'object',\r\n options: { objectTypes: [JSONData] },\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object[0] = this.metaData ? new JSONData(null, this.metaData) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n this.metaData = (value?.object[0] as JSONData)?.data ?? null;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getGraphNodeClass(): SerializableClass {\r\n return {\r\n ctor: GraphNode,\r\n parent: SceneNode,\r\n name: 'GraphNode',\r\n createFunc(ctx: SceneNode) {\r\n const node = new GraphNode(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n"],"names":["getSceneNodeClass","manager","ctor","SceneNode","name","createFunc","ctx","init","scene","Scene","prefabData","loadPrefabContent","prefabId","data","nodeData","applyPatch","patch","tmpNode","DRef","get","remove","sceneNode","deserializeObject","parent","rootNode","dispose","obj","loadProps","node","getInitParams","flags","undefined","serializeObject","diff","ASSERT","length","saveProps","getProps","defineProps","type","value","str","persistentId","set","isHidden","getDefaultValue","default","options","animatable","isPersistent","jointTypeT","num","position","x","y","z","setXYZ","jointTypeS","isCamera","scale","edit","isOrtho","zyx","rotation","toEulerAngles","Math","round","radian2degree","fromEulerAngle","degree2radian","jointTypeR","w","setXYZW","bool","pickable","enum","labels","values","showState","phase","object","child","children","sealed","push","i","includes","console","error","readonly","objectTypes","AnimationClip","animationSet","getAnimationNames","map","getAnimationClip","ani","animation","tracks","track","embedded","addTrack","NodeTranslationTrack","NodeScaleTrack","NodeRotationTrack","editorMode","autoPlay","playAnimation","repeat","delete","index","deleteAnimation","skeletons","v","forEach","splice","mimeTypes","isNullable","script","JSONData","metaData","getGraphNodeClass","GraphNode"],"mappings":"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"}
@@ -9,11 +9,14 @@ import '../../../material/unlit.js';
9
9
  import { ParticleMaterial } from '../../../material/particle.js';
10
10
  import '../../../material/meshmaterial.js';
11
11
  import '../../../material/grassmaterial.js';
12
- import '../../../material/terrainmaterial.js';
13
12
  import '../../../material/terrain-cm.js';
14
13
  import '../../../material/pbrmr.js';
15
14
  import '../../../material/pbrsg.js';
16
15
  import '../../../material/pbrblueprint.js';
16
+ import '../../../material/sprite.js';
17
+ import '../../../material/sprite_std.js';
18
+ import { defineProps } from '../types.js';
19
+ import '../../blueprint/material/texture.js';
17
20
  import '../../../render/renderer.js';
18
21
  import '../../../render/primitive.js';
19
22
  import '../../../render/sky.js';
@@ -22,12 +25,11 @@ import '../../../shaders/atmosphere.js';
22
25
  import { GraphNode } from '../../../scene/graph_node.js';
23
26
  import '../../../shadow/shadowmapper.js';
24
27
  import '../../../scene/mesh.js';
28
+ import '../../../scene/basesprite.js';
25
29
  import '../../../scene/water.js';
26
30
  import '../../../scene/scene_node.js';
27
31
  import { ParticleSystem } from '../../../scene/particlesys.js';
28
32
  import '../../../scene/batchgroup.js';
29
- import '../../../scene/terrain/patch.js';
30
- import '../../../scene/terrain/grass.js';
31
33
  import '../../../scene/terrain-cm/terrain-cm.js';
32
34
  import '../../../scene/terrain-cm/grass.js';
33
35
 
@@ -44,7 +46,7 @@ import '../../../scene/terrain-cm/grass.js';
44
46
  };
45
47
  },
46
48
  getProps () {
47
- return [
49
+ return defineProps([
48
50
  {
49
51
  name: 'WorldSpace',
50
52
  type: 'bool',
@@ -416,7 +418,7 @@ import '../../../scene/terrain-cm/grass.js';
416
418
  }
417
419
  }
418
420
  }
419
- ];
421
+ ]);
420
422
  }
421
423
  };
422
424
  }
@@ -1 +1 @@
1
- {"version":3,"file":"particle.js","sources":["../../../../src/utility/serialization/scene/particle.ts"],"sourcesContent":["import { GraphNode, type EmitterBehavior, type EmitterShape } from '../../../scene';\r\nimport type { SceneNode } from '../../../scene/scene_node';\r\nimport { ParticleSystem } from '../../../scene/particlesys';\r\nimport type { SerializableClass } from '../types';\r\nimport { ParticleMaterial } from '../../../material';\r\n\r\n/** @internal */\r\nexport function getParticleNodeClass(): SerializableClass {\r\n return {\r\n ctor: ParticleSystem,\r\n name: 'ParticleSystem',\r\n parent: GraphNode,\r\n createFunc(ctx: SceneNode) {\r\n const node = new ParticleSystem(ctx.scene);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return [\r\n {\r\n name: 'WorldSpace',\r\n type: 'bool',\r\n default: true,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.worldSpace;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.worldSpace = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'MaxParticleCount',\r\n type: 'int',\r\n default: 100,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.maxParticleCount;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.maxParticleCount = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitInterval',\r\n type: 'int',\r\n default: 100,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitInterval;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitInterval = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitCount',\r\n type: 'int',\r\n default: 1,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitCount;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitCount = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Gravity',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n const gravity = this.gravity;\r\n value.num[0] = gravity.x;\r\n value.num[1] = gravity.y;\r\n value.num[2] = gravity.z;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.gravity.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Wind',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n const wind = this.wind;\r\n value.num[0] = wind.x;\r\n value.num[1] = wind.y;\r\n value.num[2] = wind.z;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.wind.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Scalar',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.scalar;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.scalar = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Aspect',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.aspect;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.aspect = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'AirResistence',\r\n type: 'bool',\r\n default: false,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.airResistence;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.airResistence = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'JitterSpeed',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.jitterSpeed;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.jitterSpeed = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'JitterPower',\r\n type: 'float',\r\n default: 0,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.jitterPower;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.jitterPower = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitterShape',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Point', 'Sphere', 'Box', 'Cylinder', 'Cone'],\r\n values: ['point', 'sphere', 'box', 'cylinder', 'cone']\r\n }\r\n },\r\n default: 'point',\r\n get(this: ParticleSystem, value) {\r\n value.str[0] = this.emitterShape;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterShape = value.str[0] as EmitterShape;\r\n }\r\n },\r\n {\r\n name: 'EmitterBehavior',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Surface', 'Volume'],\r\n values: ['surface', 'volume']\r\n }\r\n },\r\n default: 'surface',\r\n get(this: ParticleSystem, value) {\r\n value.str[0] = this.emitterBehavior;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterBehavior = value.str[0] as EmitterBehavior;\r\n }\r\n },\r\n {\r\n name: 'Directional',\r\n type: 'bool',\r\n default: false,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.directional;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.directional = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Rotation',\r\n type: 'vec2',\r\n default: [0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleRotationMin;\r\n value.num[1] = this.particleRotationMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleRotationMin = value.num[0];\r\n this.particleRotationMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'ConeRadius',\r\n type: 'vec2',\r\n default: [0, 0.1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitterConeRadiusMin;\r\n value.num[1] = this.emitterConeRadiusMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterConeRadiusMin = value.num[0];\r\n this.emitterConeRadiusMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Velocity',\r\n type: 'vec2',\r\n default: [2, 3],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleVelocityMin;\r\n value.num[1] = this.particleVelocityMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleVelocityMin = value.num[0];\r\n this.particleVelocityMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Life',\r\n type: 'vec2',\r\n default: [1, 1.5],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleLifeMin;\r\n value.num[1] = this.particleLifeMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleLifeMin = value.num[0];\r\n this.particleLifeMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Size1',\r\n type: 'vec2',\r\n default: [0.4, 0.5],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleSize1Min;\r\n value.num[1] = this.particleSize1Max;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleSize1Min = value.num[0];\r\n this.particleSize1Max = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Size2',\r\n type: 'vec2',\r\n default: [0, 0.1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleSize2Min;\r\n value.num[1] = this.particleSize2Max;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleSize2Min = value.num[0];\r\n this.particleSize2Max = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Acceleration',\r\n type: 'vec2',\r\n default: [-0.01, -0.02],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleAccelMin;\r\n value.num[1] = this.particleAccelMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleAccelMin = value.num[0];\r\n this.particleAccelMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Material',\r\n type: 'object',\r\n default: null,\r\n options: {\r\n objectTypes: [ParticleMaterial]\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.object[0] = this.getMaterial();\r\n },\r\n set(this: ParticleSystem, value) {\r\n if (!value.object[0]) {\r\n this.material = null;\r\n } else if (value.object[0] instanceof ParticleMaterial) {\r\n this.material = value.object[0];\r\n } else {\r\n console.error('Invalid material type');\r\n }\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n}\r\n"],"names":["getParticleNodeClass","ctor","ParticleSystem","name","parent","GraphNode","createFunc","ctx","node","scene","obj","getProps","type","default","get","value","bool","worldSpace","set","num","maxParticleCount","emitInterval","emitCount","options","animatable","gravity","x","y","z","setXYZ","wind","scalar","aspect","airResistence","jitterSpeed","jitterPower","enum","labels","values","str","emitterShape","emitterBehavior","directional","particleRotationMin","particleRotationMax","emitterConeRadiusMin","emitterConeRadiusMax","particleVelocityMin","particleVelocityMax","particleLifeMin","particleLifeMax","particleSize1Min","particleSize1Max","particleSize2Min","particleSize2Max","particleAccelMin","particleAccelMax","objectTypes","ParticleMaterial","object","getMaterial","material","console","error"],"mappings":"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"}
1
+ {"version":3,"file":"particle.js","sources":["../../../../src/utility/serialization/scene/particle.ts"],"sourcesContent":["import { GraphNode, type EmitterBehavior, type EmitterShape } from '../../../scene';\r\nimport type { SceneNode } from '../../../scene/scene_node';\r\nimport { ParticleSystem } from '../../../scene/particlesys';\r\nimport { defineProps, type SerializableClass } from '../types';\r\nimport { ParticleMaterial } from '../../../material';\r\n\r\n/** @internal */\r\nexport function getParticleNodeClass(): SerializableClass {\r\n return {\r\n ctor: ParticleSystem,\r\n name: 'ParticleSystem',\r\n parent: GraphNode,\r\n createFunc(ctx: SceneNode) {\r\n const node = new ParticleSystem(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'WorldSpace',\r\n type: 'bool',\r\n default: true,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.worldSpace;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.worldSpace = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'MaxParticleCount',\r\n type: 'int',\r\n default: 100,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.maxParticleCount;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.maxParticleCount = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitInterval',\r\n type: 'int',\r\n default: 100,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitInterval;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitInterval = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitCount',\r\n type: 'int',\r\n default: 1,\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitCount;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitCount = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Gravity',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n const gravity = this.gravity;\r\n value.num[0] = gravity.x;\r\n value.num[1] = gravity.y;\r\n value.num[2] = gravity.z;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.gravity.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Wind',\r\n type: 'vec3',\r\n default: [0, 0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n const wind = this.wind;\r\n value.num[0] = wind.x;\r\n value.num[1] = wind.y;\r\n value.num[2] = wind.z;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.wind.setXYZ(value.num[0], value.num[1], value.num[2]);\r\n }\r\n },\r\n {\r\n name: 'Scalar',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.scalar;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.scalar = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Aspect',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.aspect;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.aspect = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'AirResistence',\r\n type: 'bool',\r\n default: false,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.airResistence;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.airResistence = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'JitterSpeed',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.jitterSpeed;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.jitterSpeed = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'JitterPower',\r\n type: 'float',\r\n default: 0,\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.jitterPower;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.jitterPower = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'EmitterShape',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Point', 'Sphere', 'Box', 'Cylinder', 'Cone'],\r\n values: ['point', 'sphere', 'box', 'cylinder', 'cone']\r\n }\r\n },\r\n default: 'point',\r\n get(this: ParticleSystem, value) {\r\n value.str[0] = this.emitterShape;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterShape = value.str[0] as EmitterShape;\r\n }\r\n },\r\n {\r\n name: 'EmitterBehavior',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Surface', 'Volume'],\r\n values: ['surface', 'volume']\r\n }\r\n },\r\n default: 'surface',\r\n get(this: ParticleSystem, value) {\r\n value.str[0] = this.emitterBehavior;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterBehavior = value.str[0] as EmitterBehavior;\r\n }\r\n },\r\n {\r\n name: 'Directional',\r\n type: 'bool',\r\n default: false,\r\n get(this: ParticleSystem, value) {\r\n value.bool[0] = this.directional;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.directional = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Rotation',\r\n type: 'vec2',\r\n default: [0, 0],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleRotationMin;\r\n value.num[1] = this.particleRotationMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleRotationMin = value.num[0];\r\n this.particleRotationMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'ConeRadius',\r\n type: 'vec2',\r\n default: [0, 0.1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.emitterConeRadiusMin;\r\n value.num[1] = this.emitterConeRadiusMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.emitterConeRadiusMin = value.num[0];\r\n this.emitterConeRadiusMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Velocity',\r\n type: 'vec2',\r\n default: [2, 3],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleVelocityMin;\r\n value.num[1] = this.particleVelocityMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleVelocityMin = value.num[0];\r\n this.particleVelocityMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Life',\r\n type: 'vec2',\r\n default: [1, 1.5],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleLifeMin;\r\n value.num[1] = this.particleLifeMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleLifeMin = value.num[0];\r\n this.particleLifeMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Size1',\r\n type: 'vec2',\r\n default: [0.4, 0.5],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleSize1Min;\r\n value.num[1] = this.particleSize1Max;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleSize1Min = value.num[0];\r\n this.particleSize1Max = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Size2',\r\n type: 'vec2',\r\n default: [0, 0.1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleSize2Min;\r\n value.num[1] = this.particleSize2Max;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleSize2Min = value.num[0];\r\n this.particleSize2Max = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Acceleration',\r\n type: 'vec2',\r\n default: [-0.01, -0.02],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.num[0] = this.particleAccelMin;\r\n value.num[1] = this.particleAccelMax;\r\n },\r\n set(this: ParticleSystem, value) {\r\n this.particleAccelMin = value.num[0];\r\n this.particleAccelMax = value.num[1];\r\n }\r\n },\r\n {\r\n name: 'Material',\r\n type: 'object',\r\n default: null,\r\n options: {\r\n objectTypes: [ParticleMaterial]\r\n },\r\n get(this: ParticleSystem, value) {\r\n value.object[0] = this.getMaterial();\r\n },\r\n set(this: ParticleSystem, value) {\r\n if (!value.object[0]) {\r\n this.material = null;\r\n } else if (value.object[0] instanceof ParticleMaterial) {\r\n this.material = value.object[0];\r\n } else {\r\n console.error('Invalid material type');\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["getParticleNodeClass","ctor","ParticleSystem","name","parent","GraphNode","createFunc","ctx","node","scene","obj","getProps","defineProps","type","default","get","value","bool","worldSpace","set","num","maxParticleCount","emitInterval","emitCount","options","animatable","gravity","x","y","z","setXYZ","wind","scalar","aspect","airResistence","jitterSpeed","jitterPower","enum","labels","values","str","emitterShape","emitterBehavior","directional","particleRotationMin","particleRotationMax","emitterConeRadiusMin","emitterConeRadiusMax","particleVelocityMin","particleVelocityMax","particleLifeMin","particleLifeMax","particleSize1Min","particleSize1Max","particleSize2Min","particleSize2Max","particleAccelMin","particleAccelMax","objectTypes","ParticleMaterial","object","getMaterial","material","console","error"],"mappings":"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"}