@zephyr3d/editor 0.3.0 → 0.3.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.
- package/README.md +143 -0
- package/dist/assets/{index-BaUzUcND.js → index-IISR7uQv.js} +1 -1
- package/dist/assistant/zephyr-types-index.json +1 -1
- package/dist/index.html +2 -2
- package/dist/modules/zephyr3d_backend-webgpu.js.map +1 -1
- package/dist/modules/zephyr3d_imgui.js +3 -3
- package/dist/modules/zephyr3d_imgui.js.map +1 -1
- package/dist/modules/zephyr3d_scene.js +1439 -1439
- package/dist/modules/zephyr3d_scene.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/bindgroup_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/buffer_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/commandqueue.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/uploadringbuffer.js.map +1 -1
- package/dist/vendor/zephyr3d/imgui/dist/imgui_impl.js.map +1 -1
- package/dist/vendor/zephyr3d/imgui/dist/renderer.js +3 -3
- package/dist/vendor/zephyr3d/imgui/dist/renderer.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js +135 -135
- package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics/controller.js +146 -146
- package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/animation/spring/spring_system.js +75 -75
- package/dist/vendor/zephyr3d/scene/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/camera/camera.js +184 -184
- package/dist/vendor/zephyr3d/scene/dist/camera/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/material.js +288 -288
- package/dist/vendor/zephyr3d/scene/dist/material/material.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/history_resource_manager.js +93 -93
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/history_resource_manager.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/history_resources.js +3 -3
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/types.js +22 -22
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/types.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/blueprint/material/ir.js +489 -489
- package/dist/vendor/zephyr3d/scene/dist/utility/blueprint/material/ir.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/types.js +4 -4
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh.js","sources":["../../../../src/utility/serialization/scene/mesh.ts"],"sourcesContent":["import { base64ToUint8Array, uint8ArrayToBase64, Vector3 } from '@zephyr3d/base';\nimport { getEngine } from '../../../app/api';\nimport type { MeshMaterial } from '../../../material/meshmaterial';\nimport { GraphNode, Mesh, type SceneNode } from '../../../scene';\nimport { defineProps, type SerializableClass } from '../types';\nimport { BoundingBox } from '../../bounding_volume';\nimport { meshInstanceClsMap } from './common';\nimport { JSONData } from '../json';\n\n/** @internal */\nexport function getMeshClass(): SerializableClass {\n return {\n ctor: Mesh,\n name: 'Mesh',\n parent: GraphNode,\n noTitle: true,\n createFunc(ctx: SceneNode) {\n const node = new Mesh(ctx.scene!);\n node.parent = ctx;\n return { obj: node };\n },\n getProps() {\n return defineProps([\n {\n name: 'CastShadow',\n description: 'If true, the mesh can cast shadows',\n type: 'bool',\n default: false,\n get(this: Mesh, value) {\n value.bool[0] = this.castShadow;\n },\n set(this: Mesh, value) {\n this.castShadow = value.bool[0];\n }\n },\n {\n name: 'SkinnedBoundingInfo',\n description: 'Serialized skinned bounding data for the mesh',\n type: 'string',\n isHidden() {\n return true;\n },\n get(this: Mesh, value) {\n if (this.skinnedBoundingInfo) {\n const arr = new Float32Array(24 + 24 + 6 * 3);\n arr.set(this.skinnedBoundingInfo.boundingVertexBlendIndices, 0);\n arr.set(this.skinnedBoundingInfo.boundingVertexJointWeights, 24);\n for (let i = 0; i < 6; i++) {\n arr.set(this.skinnedBoundingInfo.boundingVertices[i], 24 + 24 + i * 3);\n }\n value.str[0] = uint8ArrayToBase64(new Uint8Array(arr.buffer));\n } else {\n value.str[0] = '';\n }\n },\n set(this: Mesh, value) {\n if (value.str[0]) {\n const buf = new Float32Array(base64ToUint8Array(value.str[0]).buffer);\n const boundingVertexBlendIndices = buf.subarray(0, 24);\n const boundingVertexJointWeights = buf.subarray(24, 48);\n const boundingVertices: Vector3[] = [];\n for (let i = 0; i < 6; i++) {\n boundingVertices.push(new Vector3(buf.subarray(48 + i * 3, 48 + (i + 1) * 3)));\n }\n this.setSkinnedBoundingInfo({\n boundingVertexBlendIndices,\n boundingVertexJointWeights,\n boundingVertices,\n boundingBox: new BoundingBox()\n });\n } else {\n this.setSkinnedBoundingInfo(null);\n }\n }\n },\n {\n name: 'Skeleton',\n description: 'Persistent ID of the skeleton bound to this mesh',\n type: 'string',\n isHidden() {\n return false;\n },\n get(this: Mesh, value) {\n value.str[0] = this.skeletonName;\n },\n set(this: Mesh, value) {\n this.skeletonName = value.str[0];\n }\n },\n {\n name: 'MorphData',\n description: 'Serialized morph-target vertex data',\n type: 'string',\n isHidden() {\n return true;\n },\n async get(this: Mesh, value) {\n const morphData = this.getMorphData();\n if (morphData) {\n const buffer = new ArrayBuffer(4 + 4 + 4 * 4 * morphData.width * morphData.height);\n const dataView = new DataView(buffer);\n dataView.setUint32(0, morphData.width, true);\n dataView.setUint32(4, morphData.height, true);\n new Float32Array(buffer, 8, 4 * morphData.width * morphData.height).set(morphData.data);\n value.str[0] = uint8ArrayToBase64(new Uint8Array(buffer));\n } else {\n value.str[0] = '';\n }\n },\n set(this: Mesh, value) {\n if (value.str[0]) {\n const data = base64ToUint8Array(value.str[0]);\n const dataView = new DataView(data.buffer);\n const width = dataView.getUint32(0, true);\n const height = dataView.getUint32(4, true);\n const pixels = new Float32Array(data.buffer, 8, 4 * width * height);\n this.setMorphData({ width, height, data: pixels });\n } else {\n this.setMorphData(null);\n }\n }\n },\n {\n name: 'MorphTargets',\n description: 'Named morph-target weights for this mesh',\n type: 'object',\n options: { objectTypes: [JSONData] },\n isPersistent() {\n return false;\n },\n isHidden(this: Mesh) {\n return !this.getMorphInfo();\n },\n get(this: Mesh, value) {\n const morphInfo = this.getMorphInfo()!;\n const numTargets = morphInfo.data[3];\n const data: Record<string, number> = {};\n for (let i = 0; i < numTargets; i++) {\n const name = Object.keys(morphInfo.names).find((key) => morphInfo.names![key] === i);\n if (name) {\n Object.defineProperty(data, name, {\n enumerable: true,\n configurable: true,\n get: () => this.getMorphWeight(name),\n set: (v) => this.setMorphWeight(name, v)\n });\n }\n }\n value.object[0] = new JSONData(null, data);\n }\n },\n {\n name: 'MorphInfo',\n description: 'Serialized morph-target layout and metadata',\n type: 'string',\n isHidden() {\n return true;\n },\n get(this: Mesh, value) {\n const morphInfo = this.getMorphInfo();\n if (morphInfo) {\n const data = new Uint8Array(\n morphInfo.data.buffer,\n morphInfo.data.byteOffset,\n morphInfo.data.byteLength\n );\n value.str[0] = JSON.stringify({ data: uint8ArrayToBase64(data), names: morphInfo.names });\n } else {\n value.str[0] = '';\n }\n },\n set(this: Mesh, value) {\n if (value.str[0]) {\n try {\n const info = JSON.parse(value.str[0]);\n const data = new Float32Array(base64ToUint8Array(info.data).buffer);\n const names = info.names;\n this.setMorphInfo({ data, names });\n } catch {\n const data = new Float32Array(base64ToUint8Array(value.str[0]).buffer);\n const names: Record<string, number> = {};\n for (let i = 0; i < data[3]; i++) {\n names[`Target${i}`] = i;\n }\n this.setMorphInfo({ data, names });\n }\n } else {\n this.setMorphInfo(null);\n }\n }\n },\n {\n name: 'MorphBoundingBox',\n description: 'Serialized bounding box for morphed geometry',\n type: 'string',\n isHidden() {\n return true;\n },\n get(this: Mesh, value) {\n value.str[0] = '';\n if (this.getMorphData()) {\n const box = this.getAnimatedBoundingBox();\n if (box) {\n const data = new Float32Array([...box.minPoint, ...box.maxPoint]);\n value.str[0] = uint8ArrayToBase64(new Uint8Array(data.buffer));\n }\n }\n },\n set(this: Mesh, value) {\n if (value.str[0]) {\n const data = new Float32Array(base64ToUint8Array(value.str[0]).buffer);\n const bbox = new BoundingBox();\n bbox.minPoint.setXYZ(data[0], data[1], data[2]);\n bbox.maxPoint.setXYZ(data[3], data[4], data[5]);\n this.setAnimatedBoundingBox(bbox);\n } else {\n this.setAnimatedBoundingBox(null);\n }\n }\n },\n {\n name: 'Primitive',\n description: 'Primitive object of this mesh',\n type: 'object',\n options: {\n mimeTypes: ['application/vnd.zephyr3d.mesh+json']\n },\n get(this: Mesh, value) {\n value.str[0] = this.primitive\n ? (getEngine().resourceManager.getAssetId(this.primitive) ?? '')\n : '';\n },\n async set(this: Mesh, value) {\n if (value?.str[0]) {\n const primitive = await getEngine().resourceManager.fetchPrimitive(value.str[0]);\n if (primitive) {\n this.primitive = primitive;\n } else {\n console.error(`Primitive not found: ${value.str[0]}`);\n }\n }\n }\n },\n {\n name: 'Material',\n description: 'Material object of this mesh',\n type: 'object',\n options: {\n mimeTypes: ['application/vnd.zephyr3d.material+json']\n },\n get(this: Mesh, value) {\n const m = this.material?.coreMaterial;\n value.str[0] = getEngine().resourceManager.getAssetId(m) ?? '';\n },\n async set(this: Mesh, value) {\n if (value?.str[0]) {\n const material = await getEngine().resourceManager.fetchMaterial<MeshMaterial>(value.str[0]);\n if (material) {\n this.material = material;\n } else {\n console.error(`Material not found: ${value.str[0]}`);\n }\n }\n }\n },\n {\n name: 'Geometry Instance',\n description: 'If true, geometry instancing is enabled for this mesh',\n type: 'bool',\n get(this: Mesh, value) {\n value.bool[0] = !!this.material?.$isInstance;\n },\n set(this: Mesh, value) {\n this.material = value.bool[0]\n ? (this.material?.createInstance() ?? null)\n : (this.material?.coreMaterial ?? null);\n }\n },\n {\n name: 'MaterialInstanceUniforms',\n description: 'Per-instance material uniform properties',\n type: 'object',\n phase: 1,\n options: {\n objectTypes: []\n },\n isHidden(this: Mesh) {\n return !!this.material && !this.material?.$isInstance;\n },\n isNullable() {\n return true;\n },\n get(this: Mesh, value) {\n const C = this.material?.$isInstance\n ? meshInstanceClsMap.get(this.material.coreMaterial.constructor as typeof MeshMaterial)\n : null;\n value.object[0] = C ? new C.C(this.material!) : null;\n },\n set(this: Mesh, value) {\n if (value.object[0]) {\n this.material = (value.object[0] as any)?.material;\n }\n }\n }\n ]);\n }\n };\n}\n"],"names":["getMeshClass","ctor","Mesh","name","parent","GraphNode","noTitle","createFunc","ctx","node","scene","obj","getProps","defineProps","description","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
|
+
{"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 description: 'If true, the mesh can cast shadows',\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 description: 'Serialized skinned bounding data for the mesh',\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 description: 'Persistent ID of the skeleton bound to this mesh',\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 description: 'Serialized morph-target vertex data',\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 description: 'Named morph-target weights for this mesh',\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 description: 'Serialized morph-target layout and metadata',\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 description: 'Serialized bounding box for morphed geometry',\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 description: 'Primitive object of this mesh',\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 description: 'Material object of this mesh',\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 description: 'If true, geometry instancing is enabled for this mesh',\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 description: 'Per-instance material uniform properties',\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","description","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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sources":["../../../../src/utility/serialization/scene/node.ts"],"sourcesContent":["import { SceneNode } from '../../../scene/scene_node';\nimport type { SceneNodeVisible } from '../../../scene/scene_node';\nimport { Scene } from '../../../scene/scene';\nimport { defineProps, type SerializableClass } from '../types';\nimport type { DiffPatch, DiffValue } from '@zephyr3d/base';\nimport { applyPatch, ASSERT, degree2radian, diff, DRef, radian2degree } from '@zephyr3d/base';\nimport { GraphNode } from '../../../scene';\nimport type { ResourceManager } from '../manager';\nimport { AnimationClip, NodeRotationTrack, NodeScaleTrack, NodeTranslationTrack } from '../../../animation';\nimport { JSONArray, JSONData } from '../json';\nimport { ScriptAttachment, normalizeScriptAttachmentConfig } from '../../../scene/script_attachment';\nimport { parseZABCBlob, attachZABCAnimationsToSceneNode } from '../../../asset/loaders/zabc/zabc_loader';\nimport { restoreGeometryCacheMeshBinding } from '../../../animation/geometry_cache_utils';\nconst geometryCacheBindings = new WeakMap<\n SceneNode,\n {\n assetId: string;\n autoPlay: boolean;\n animationNames: string[];\n }\n>();\n\nfunction normalizeSerializedSceneNodeData(data: DiffValue): Record<string, unknown> {\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\n return {\n ClassName: 'SceneNode',\n Object: {}\n };\n }\n const serialized = data as Record<string, unknown>;\n if (typeof serialized.ClassName === 'string') {\n return serialized;\n }\n const objectData =\n serialized.Object && typeof serialized.Object === 'object' && !Array.isArray(serialized.Object)\n ? (serialized.Object as Record<string, unknown>)\n : serialized;\n return {\n ClassName: 'SceneNode',\n Object: objectData\n };\n}\n\nfunction hasMeshDescendants(node: SceneNode) {\n let hasMesh = false;\n node.iterate((child) => {\n if (child.isMesh()) {\n hasMesh = true;\n return true;\n }\n return false;\n });\n return hasMesh;\n}\n\nasync function restoreGeometryCacheMeshes(node: SceneNode) {\n const tasks: Promise<boolean>[] = [];\n node.iterate((child) => {\n if (child.isMesh()) {\n tasks.push(restoreGeometryCacheMeshBinding(child));\n }\n return false;\n });\n if (tasks.length > 0) {\n await Promise.all(tasks);\n }\n}\n\nasync function clearGeometryCacheBinding(node: SceneNode) {\n const previous = geometryCacheBindings.get(node);\n if (!previous) {\n return null;\n }\n for (const name of previous.animationNames) {\n if (node.animationSet.isPlayingAnimation(name)) {\n node.animationSet.stopAnimation(name);\n }\n node.animationSet.deleteAnimation(name);\n }\n await restoreGeometryCacheMeshes(node);\n geometryCacheBindings.delete(node);\n return previous;\n}\n\n/** @internal */\nexport function getSceneNodeClass(manager: ResourceManager): SerializableClass {\n return {\n ctor: SceneNode,\n name: 'SceneNode',\n async createFunc(\n ctx: Scene | SceneNode,\n init?: { prefabId?: string; assetId?: string; patch?: DiffPatch }\n ) {\n const scene = ctx instanceof Scene ? ctx : ctx.scene;\n if (init?.prefabId) {\n const prefabData = (await manager.loadPrefabContent(init.prefabId))!.data as DiffValue;\n const nodeData = normalizeSerializedSceneNodeData(\n applyPatch(prefabData, init.patch ?? []) as DiffValue\n );\n const tmpNode = new DRef(new SceneNode(scene));\n tmpNode.get()!.remove();\n tmpNode.get()!.prefabId = init.prefabId;\n const sceneNode = await manager.deserializeObject<SceneNode>(tmpNode.get(), nodeData);\n if (sceneNode) {\n sceneNode.prefabId = init.prefabId;\n sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;\n }\n tmpNode.dispose();\n return { obj: sceneNode, loadProps: false };\n }\n if (init?.assetId) {\n const fetchedModel = await manager.fetchModel(init.assetId, scene!);\n const sceneNode = fetchedModel?.group ?? null;\n if (sceneNode) {\n const originalAssetId = manager.getAssetId(sceneNode);\n try {\n manager.setAssetId(sceneNode, null);\n const baseNodeData = await manager.serializeObject(sceneNode);\n const nodeData = normalizeSerializedSceneNodeData(\n applyPatch(baseNodeData as DiffValue, init.patch ?? []) as DiffValue\n );\n await manager.deserializeObjectProps(sceneNode, nodeData.Object as Record<string, unknown>);\n } finally {\n manager.setAssetId(sceneNode, originalAssetId ?? init.assetId);\n }\n sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;\n }\n return { obj: sceneNode, loadProps: false };\n }\n const node = new SceneNode(scene);\n if (ctx instanceof SceneNode) {\n node.parent = ctx;\n }\n return { obj: node };\n },\n async getInitParams(obj: SceneNode, flags) {\n const prefabId = obj.prefabId;\n const assetId = manager.getAssetId(obj);\n let patch: DiffPatch | undefined = undefined;\n if (prefabId) {\n try {\n obj.prefabId = '';\n const prefabData = (await manager.loadPrefabContent(prefabId))!.data as DiffValue;\n const nodeData = await manager.serializeObject(obj);\n patch = diff(prefabData, nodeData);\n ASSERT(diff(applyPatch(prefabData, patch), nodeData).length === 0, 'Patch test failed');\n } finally {\n obj.prefabId = prefabId;\n }\n flags.saveProps = false;\n }\n if (!prefabId && assetId) {\n const baseNode = (await manager.fetchModel(assetId, obj.scene!))?.group ?? null;\n if (baseNode) {\n const originalObjectAssetId = manager.getAssetId(obj);\n const originalBaseAssetId = manager.getAssetId(baseNode);\n try {\n manager.setAssetId(obj, null);\n manager.setAssetId(baseNode, null);\n const baseNodeData = await manager.serializeObject(baseNode);\n const nodeData = await manager.serializeObject(obj);\n patch = diff(baseNodeData, nodeData);\n ASSERT(diff(applyPatch(baseNodeData, patch), nodeData).length === 0, 'Patch test failed');\n } finally {\n manager.setAssetId(obj, originalObjectAssetId);\n manager.setAssetId(baseNode, originalBaseAssetId);\n baseNode.remove();\n }\n flags.saveProps = false;\n }\n }\n return prefabId\n ? {\n prefabId,\n patch\n }\n : assetId\n ? {\n assetId,\n patch\n }\n : null;\n },\n getProps() {\n return defineProps([\n {\n name: 'Id',\n description: 'Unique persistent id for the node',\n type: 'string',\n get(this: SceneNode, value) {\n value.str[0] = this.persistentId;\n },\n set(this: SceneNode, value) {\n this.persistentId = value.str[0];\n }\n },\n {\n name: 'PrefabId',\n description: 'Persistent ID of the prefab source for this node',\n type: 'string',\n isHidden() {\n return true;\n },\n get(this: SceneNode, value) {\n value.str[0] = this.prefabId;\n }\n },\n {\n name: 'Name',\n description: 'Display name of the node',\n type: 'string',\n getDefaultValue() {\n return '';\n },\n get(this: SceneNode, value) {\n value.str[0] = this.name;\n },\n set(this: SceneNode, value) {\n this.name = value.str[0];\n }\n },\n {\n name: 'Position',\n description: 'Local position of the node',\n type: 'vec3',\n default: [0, 0, 0],\n options: {\n animatable: true\n },\n isPersistent(this: SceneNode) {\n return this.jointTypeT !== 'animated';\n },\n get(this: SceneNode, value) {\n value.num[0] = this.position.x;\n value.num[1] = this.position.y;\n value.num[2] = this.position.z;\n },\n set(this: SceneNode, value) {\n this.position.setXYZ(value.num[0], value.num[1], value.num[2]);\n }\n },\n {\n name: 'Scale',\n description: 'Local scale of the node',\n type: 'vec3',\n default: [1, 1, 1],\n options: {\n animatable: true\n },\n isPersistent(this: SceneNode) {\n return this.jointTypeS !== 'animated';\n },\n isHidden(this: SceneNode) {\n return this.isCamera();\n },\n get(this: SceneNode, value) {\n value.num[0] = this.scale.x;\n value.num[1] = this.scale.y;\n value.num[2] = this.scale.z;\n },\n set(this: SceneNode, value) {\n this.scale.setXYZ(value.num[0], value.num[1], value.num[2]);\n }\n },\n {\n name: 'Rotation',\n description: 'Euler rotation of this node in ZYX order',\n type: 'vec3',\n default: [0, 0, 0],\n options: {\n animatable: true,\n edit: 'quaternion'\n },\n isPersistent() {\n return false;\n },\n isHidden(this: SceneNode) {\n return this.isCamera() && this.isOrtho();\n },\n get(this: SceneNode, value) {\n const zyx = this.rotation.toEulerAngles();\n value.num[0] = Math.round(radian2degree(zyx.x));\n value.num[1] = Math.round(radian2degree(zyx.y));\n value.num[2] = Math.round(radian2degree(zyx.z));\n },\n set(this: SceneNode, value) {\n this.rotation.fromEulerAngle(\n degree2radian(value.num[0]),\n degree2radian(value.num[1]),\n degree2radian(value.num[2])\n );\n }\n },\n {\n name: 'QuatRotation',\n description: 'Node rotation quaternion',\n type: 'vec4',\n default: [0, 0, 0, 1],\n isHidden() {\n return true;\n },\n isPersistent(this: SceneNode) {\n return this.jointTypeR !== 'animated';\n },\n get(this: SceneNode, value) {\n value.num[0] = this.rotation.x;\n value.num[1] = this.rotation.y;\n value.num[2] = this.rotation.z;\n value.num[3] = this.rotation.w;\n },\n set(this: SceneNode, value) {\n this.rotation.setXYZW(value.num[0], value.num[1], value.num[2], value.num[3]);\n }\n },\n {\n name: 'Pickable',\n description: 'If true, enable ray-cast for this object',\n type: 'bool',\n default: false,\n get(this: SceneNode, value) {\n value.bool[0] = this.pickable;\n },\n set(this: SceneNode, value) {\n this.pickable = value.bool[0];\n }\n },\n {\n name: 'Visible',\n description: 'Node visible state',\n type: 'string',\n default: 'inherit',\n options: {\n enum: {\n labels: ['Visible', 'Hidden', 'Inherit'],\n values: ['visible', 'hidden', 'inherit']\n }\n },\n get(this: SceneNode, value) {\n value.str[0] = this.showState;\n },\n set(this: SceneNode, value) {\n this.showState = value.str[0] as SceneNodeVisible;\n }\n },\n {\n name: 'Children',\n description: 'Children nodes of this node',\n type: 'object_array',\n phase: 0,\n isHidden() {\n return true;\n },\n get(this: SceneNode, value) {\n value.object = [];\n for (const child of this.children) {\n if (!child.sealed) {\n value.object.push(child);\n }\n }\n },\n set(this: SceneNode, value) {\n const children = this.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n if (!value.object.includes(child) && !child.sealed) {\n child.remove();\n }\n }\n for (const child of value.object) {\n if (child instanceof SceneNode) {\n child.parent = this;\n } else {\n console.error(`Invalid scene node: ${child}`);\n }\n }\n }\n },\n {\n name: 'GeometryCache',\n description: 'Alembic geometry cache asset used by this node',\n type: 'string',\n options: {\n group: 'Animation',\n label: 'Geometry Cache',\n mimeTypes: ['application/vnd.zephyr3d.alembic-cache+json']\n },\n isValid(this: SceneNode) {\n return this !== this.scene?.rootNode && hasMeshDescendants(this);\n },\n get(this: SceneNode, value) {\n value.str[0] = geometryCacheBindings.get(this)?.assetId ?? '';\n },\n async set(this: SceneNode, value) {\n const previous = await clearGeometryCacheBinding(this);\n const assetId = value?.str?.[0]?.trim() ?? '';\n if (!assetId) {\n return;\n }\n const binary = (await manager.assetManager.fetchBinaryData(assetId)) as ArrayBuffer;\n const parsed = await parseZABCBlob(\n new Blob([binary], { type: manager.VFS.guessMIMEType(assetId) || 'application/octet-stream' })\n );\n const autoPlay = previous?.autoPlay ?? false;\n const result = await attachZABCAnimationsToSceneNode(this, parsed, {\n sourcePath: assetId,\n autoPlay,\n replaceAnimationNames: []\n });\n geometryCacheBindings.set(this, {\n assetId,\n autoPlay,\n animationNames: result.animationNames\n });\n }\n },\n {\n name: 'GeometryCacheAutoPlay',\n description: 'If true, plays the geometry cache automatically when loaded',\n type: 'bool',\n default: false,\n options: {\n group: 'Animation',\n label: 'Cache AutoPlay'\n },\n isValid(this: SceneNode) {\n return this !== this.scene?.rootNode && hasMeshDescendants(this);\n },\n get(this: SceneNode, value) {\n value.bool[0] = geometryCacheBindings.get(this)?.autoPlay ?? false;\n },\n async set(this: SceneNode, value) {\n const current = geometryCacheBindings.get(this);\n if (!current) {\n return;\n }\n const autoPlay = !!value.bool[0];\n geometryCacheBindings.set(this, {\n assetId: current.assetId,\n autoPlay,\n animationNames: current.animationNames\n });\n for (const name of current.animationNames) {\n const animation = this.animationSet.getAnimationClip(name);\n if (animation) {\n animation.autoPlay = autoPlay;\n if (autoPlay) {\n this.animationSet.playAnimation(name, { repeat: 0 });\n } else if (this.animationSet.isPlayingAnimation(name)) {\n this.animationSet.stopAnimation(name);\n }\n }\n }\n }\n },\n {\n name: 'Animations',\n description: 'Animation clips which affect this object or children',\n type: 'object_array',\n phase: 2,\n readonly: true,\n options: {\n objectTypes: [AnimationClip]\n },\n get(this: SceneNode, value) {\n const animationSet = this.animationSet;\n value.object = animationSet\n .getAnimationNames()\n .map((name) => animationSet.getAnimationClip(name));\n },\n set(this: SceneNode, value) {\n for (const ani of value.object) {\n const animation = ani as AnimationClip;\n for (const tracks of animation.tracks) {\n for (const track of tracks[1]) {\n if (!track.embedded) {\n animation.addTrack(tracks[0], track);\n if (tracks[0] instanceof SceneNode) {\n if (track instanceof NodeTranslationTrack) {\n tracks[0].jointTypeT = 'animated';\n } else if (track instanceof NodeScaleTrack) {\n tracks[0].jointTypeS = 'animated';\n } else if (track instanceof NodeRotationTrack) {\n tracks[0].jointTypeR = 'animated';\n }\n }\n }\n }\n }\n if (!manager.editorMode && animation.autoPlay) {\n this.animationSet.playAnimation(animation.name, { repeat: 0 });\n }\n }\n },\n delete(this: SceneNode, index) {\n const animationSet = this.animationSet;\n const name = animationSet.getAnimationNames()[index];\n const animation = animationSet.getAnimationClip(name);\n if (animation) {\n animationSet.deleteAnimation(name);\n }\n }\n },\n {\n name: 'Skeletons',\n description: 'Skeleton references used by the node animations',\n type: 'object_array',\n phase: 1,\n isHidden() {\n return true;\n },\n get(this: SceneNode, value) {\n const animationSet = this.animationSet;\n value.object = animationSet.skeletons.map((v) => v.get());\n },\n set(this: SceneNode, value) {\n const animationSet = this.animationSet;\n animationSet.skeletons.forEach((v) => v.dispose());\n animationSet.skeletons.splice(0, animationSet.skeletons.length);\n animationSet.skeletons.push(...(value.object as any[]).map((v) => new DRef(v)));\n }\n },\n {\n name: 'Script',\n description: 'First script file path which is attached to this node',\n type: 'object',\n options: {\n mimeTypes: ['text/x-typescript']\n },\n isHidden() {\n return true;\n },\n isNullable() {\n return true;\n },\n get(this: SceneNode, value) {\n value.str[0] = this.script;\n },\n set(this: SceneNode, value) {\n this.script = value?.str?.[0] ?? '';\n }\n },\n {\n name: 'Scripts',\n description: 'All script file paths which are attached to this node',\n type: 'object_array',\n options: {\n objectTypes: [ScriptAttachment]\n },\n isHidden() {\n return true;\n },\n getDefaultValue(this: SceneNode) {\n return this.scripts;\n },\n isNullable() {\n return false;\n },\n get(this: SceneNode, value) {\n value.object = this.scripts;\n },\n set(this: SceneNode, value) {\n this.scripts = (value.object as ScriptAttachment[]) ?? [];\n },\n create() {\n return new ScriptAttachment();\n },\n add(this: SceneNode, value, index) {\n const attachments = this.scripts;\n attachments.splice(\n index ?? attachments.length,\n 0,\n (value.object?.[0] as ScriptAttachment) ?? new ScriptAttachment()\n );\n this.scripts = attachments;\n },\n delete(this: SceneNode, index) {\n const attachments = this.scripts;\n if (index >= 0 && index < attachments.length) {\n attachments.splice(index, 1);\n this.scripts = attachments;\n }\n }\n },\n {\n name: 'ScriptConfig',\n description: 'Configuration object passed to the attached script',\n type: 'object',\n options: { objectTypes: [JSONData, JSONArray] },\n isHidden() {\n return true;\n },\n isNullable() {\n return true;\n },\n isPersistent(this: SceneNode) {\n return !!this.script;\n },\n get(this: SceneNode, value) {\n const config = normalizeScriptAttachmentConfig(this.scriptConfig);\n value.object[0] =\n config == null\n ? null\n : Array.isArray(config)\n ? new JSONArray(null, config)\n : new JSONData(null, config);\n },\n set(this: SceneNode, value) {\n const data = value?.object[0] as\n | JSONData\n | JSONArray\n | Record<string, unknown>\n | unknown[]\n | null\n | undefined;\n this.scriptConfig =\n data instanceof JSONData || data instanceof JSONArray\n ? normalizeScriptAttachmentConfig(data.data)\n : normalizeScriptAttachmentConfig(data);\n }\n },\n {\n name: 'ScriptConfigs',\n description: 'Per-script configuration array for all attached scripts',\n type: 'object',\n options: { objectTypes: [JSONArray] },\n getDefaultValue(this: SceneNode) {\n return this.scriptConfigs;\n },\n isHidden() {\n return true;\n },\n isNullable() {\n return true;\n },\n isPersistent(this: SceneNode) {\n return this.scripts.length > 0;\n },\n get(this: SceneNode, value) {\n value.object[0] = this.scriptConfigs.length > 0 ? new JSONArray(null, this.scriptConfigs) : null;\n },\n set(this: SceneNode, value) {\n const data = value?.object[0] as JSONArray | unknown[] | null | undefined;\n this.scriptConfigs = data instanceof JSONArray ? data.data : Array.isArray(data) ? data : [];\n }\n },\n {\n name: 'Metadata',\n description: 'Meta data for this node',\n type: 'object',\n options: { objectTypes: [JSONData] },\n isNullable() {\n return true;\n },\n get(this: SceneNode, value) {\n value.object[0] = this.metaData ? new JSONData(null, this.metaData) : null;\n },\n set(this: SceneNode, value) {\n const data = value?.object[0] as JSONData | Record<string, unknown> | null | undefined;\n this.metaData = data instanceof JSONData ? data.data : (data ?? null);\n }\n }\n ]);\n }\n };\n}\n\n/** @internal */\nexport function getGraphNodeClass(): SerializableClass {\n return {\n ctor: GraphNode,\n parent: SceneNode,\n name: 'GraphNode',\n createFunc(ctx: SceneNode) {\n const node = new GraphNode(ctx.scene!);\n node.parent = ctx;\n return { obj: node };\n },\n getProps() {\n return [];\n }\n };\n}\n"],"names":["geometryCacheBindings","WeakMap","normalizeSerializedSceneNodeData","data","Array","isArray","ClassName","Object","serialized","objectData","hasMeshDescendants","node","hasMesh","iterate","child","isMesh","restoreGeometryCacheMeshes","tasks","push","restoreGeometryCacheMeshBinding","length","Promise","all","clearGeometryCacheBinding","previous","get","name","animationNames","animationSet","isPlayingAnimation","stopAnimation","deleteAnimation","delete","getSceneNodeClass","manager","ctor","SceneNode","createFunc","ctx","init","scene","Scene","prefabId","prefabData","loadPrefabContent","nodeData","applyPatch","patch","tmpNode","DRef","remove","sceneNode","deserializeObject","parent","rootNode","dispose","obj","loadProps","assetId","fetchedModel","fetchModel","group","originalAssetId","getAssetId","setAssetId","baseNodeData","serializeObject","deserializeObjectProps","getInitParams","flags","undefined","diff","ASSERT","saveProps","baseNode","originalObjectAssetId","originalBaseAssetId","getProps","defineProps","description","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","children","sealed","i","includes","console","error","label","mimeTypes","isValid","trim","binary","assetManager","fetchBinaryData","parsed","parseZABCBlob","Blob","VFS","guessMIMEType","autoPlay","result","attachZABCAnimationsToSceneNode","sourcePath","replaceAnimationNames","current","animation","getAnimationClip","playAnimation","repeat","readonly","objectTypes","AnimationClip","getAnimationNames","map","ani","tracks","track","embedded","addTrack","NodeTranslationTrack","NodeScaleTrack","NodeRotationTrack","editorMode","index","skeletons","v","forEach","splice","isNullable","script","ScriptAttachment","scripts","create","add","attachments","JSONData","JSONArray","config","normalizeScriptAttachmentConfig","scriptConfig","scriptConfigs","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 { JSONArray, JSONData } from '../json';\r\nimport { ScriptAttachment, normalizeScriptAttachmentConfig } from '../../../scene/script_attachment';\r\nimport { parseZABCBlob, attachZABCAnimationsToSceneNode } from '../../../asset/loaders/zabc/zabc_loader';\r\nimport { restoreGeometryCacheMeshBinding } from '../../../animation/geometry_cache_utils';\r\nconst geometryCacheBindings = new WeakMap<\r\n SceneNode,\r\n {\r\n assetId: string;\r\n autoPlay: boolean;\r\n animationNames: string[];\r\n }\r\n>();\r\n\r\nfunction normalizeSerializedSceneNodeData(data: DiffValue): Record<string, unknown> {\r\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\r\n return {\r\n ClassName: 'SceneNode',\r\n Object: {}\r\n };\r\n }\r\n const serialized = data as Record<string, unknown>;\r\n if (typeof serialized.ClassName === 'string') {\r\n return serialized;\r\n }\r\n const objectData =\r\n serialized.Object && typeof serialized.Object === 'object' && !Array.isArray(serialized.Object)\r\n ? (serialized.Object as Record<string, unknown>)\r\n : serialized;\r\n return {\r\n ClassName: 'SceneNode',\r\n Object: objectData\r\n };\r\n}\r\n\r\nfunction hasMeshDescendants(node: SceneNode) {\r\n let hasMesh = false;\r\n node.iterate((child) => {\r\n if (child.isMesh()) {\r\n hasMesh = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return hasMesh;\r\n}\r\n\r\nasync function restoreGeometryCacheMeshes(node: SceneNode) {\r\n const tasks: Promise<boolean>[] = [];\r\n node.iterate((child) => {\r\n if (child.isMesh()) {\r\n tasks.push(restoreGeometryCacheMeshBinding(child));\r\n }\r\n return false;\r\n });\r\n if (tasks.length > 0) {\r\n await Promise.all(tasks);\r\n }\r\n}\r\n\r\nasync function clearGeometryCacheBinding(node: SceneNode) {\r\n const previous = geometryCacheBindings.get(node);\r\n if (!previous) {\r\n return null;\r\n }\r\n for (const name of previous.animationNames) {\r\n if (node.animationSet.isPlayingAnimation(name)) {\r\n node.animationSet.stopAnimation(name);\r\n }\r\n node.animationSet.deleteAnimation(name);\r\n }\r\n await restoreGeometryCacheMeshes(node);\r\n geometryCacheBindings.delete(node);\r\n return previous;\r\n}\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(\r\n ctx: Scene | SceneNode,\r\n init?: { prefabId?: string; assetId?: string; patch?: DiffPatch }\r\n ) {\r\n const scene = ctx instanceof Scene ? ctx : ctx.scene;\r\n if (init?.prefabId) {\r\n const prefabData = (await manager.loadPrefabContent(init.prefabId))!.data as DiffValue;\r\n const nodeData = normalizeSerializedSceneNodeData(\r\n applyPatch(prefabData, init.patch ?? []) as DiffValue\r\n );\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 if (init?.assetId) {\r\n const fetchedModel = await manager.fetchModel(init.assetId, scene!);\r\n const sceneNode = fetchedModel?.group ?? null;\r\n if (sceneNode) {\r\n const originalAssetId = manager.getAssetId(sceneNode);\r\n try {\r\n manager.setAssetId(sceneNode, null);\r\n const baseNodeData = await manager.serializeObject(sceneNode);\r\n const nodeData = normalizeSerializedSceneNodeData(\r\n applyPatch(baseNodeData as DiffValue, init.patch ?? []) as DiffValue\r\n );\r\n await manager.deserializeObjectProps(sceneNode, nodeData.Object as Record<string, unknown>);\r\n } finally {\r\n manager.setAssetId(sceneNode, originalAssetId ?? init.assetId);\r\n }\r\n sceneNode.parent = ctx instanceof SceneNode ? ctx : ctx.rootNode;\r\n }\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 const assetId = manager.getAssetId(obj);\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 if (!prefabId && assetId) {\r\n const baseNode = (await manager.fetchModel(assetId, obj.scene!))?.group ?? null;\r\n if (baseNode) {\r\n const originalObjectAssetId = manager.getAssetId(obj);\r\n const originalBaseAssetId = manager.getAssetId(baseNode);\r\n try {\r\n manager.setAssetId(obj, null);\r\n manager.setAssetId(baseNode, null);\r\n const baseNodeData = await manager.serializeObject(baseNode);\r\n const nodeData = await manager.serializeObject(obj);\r\n patch = diff(baseNodeData, nodeData);\r\n ASSERT(diff(applyPatch(baseNodeData, patch), nodeData).length === 0, 'Patch test failed');\r\n } finally {\r\n manager.setAssetId(obj, originalObjectAssetId);\r\n manager.setAssetId(baseNode, originalBaseAssetId);\r\n baseNode.remove();\r\n }\r\n flags.saveProps = false;\r\n }\r\n }\r\n return prefabId\r\n ? {\r\n prefabId,\r\n patch\r\n }\r\n : assetId\r\n ? {\r\n assetId,\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 description: 'Unique persistent id for the node',\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 description: 'Persistent ID of the prefab source for this node',\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 description: 'Display name of the node',\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 description: 'Local position of the node',\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 description: 'Local scale of the node',\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 description: 'Euler rotation of this node in ZYX order',\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 description: 'Node rotation quaternion',\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 description: 'If true, enable ray-cast for this object',\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 description: 'Node visible state',\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 description: 'Children nodes of this node',\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.sealed) {\r\n value.object.push(child);\r\n }\r\n }\r\n },\r\n set(this: SceneNode, value) {\r\n const children = this.children;\r\n for (let i = children.length - 1; i >= 0; i--) {\r\n const child = children[i];\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: 'GeometryCache',\r\n description: 'Alembic geometry cache asset used by this node',\r\n type: 'string',\r\n options: {\r\n group: 'Animation',\r\n label: 'Geometry Cache',\r\n mimeTypes: ['application/vnd.zephyr3d.alembic-cache+json']\r\n },\r\n isValid(this: SceneNode) {\r\n return this !== this.scene?.rootNode && hasMeshDescendants(this);\r\n },\r\n get(this: SceneNode, value) {\r\n value.str[0] = geometryCacheBindings.get(this)?.assetId ?? '';\r\n },\r\n async set(this: SceneNode, value) {\r\n const previous = await clearGeometryCacheBinding(this);\r\n const assetId = value?.str?.[0]?.trim() ?? '';\r\n if (!assetId) {\r\n return;\r\n }\r\n const binary = (await manager.assetManager.fetchBinaryData(assetId)) as ArrayBuffer;\r\n const parsed = await parseZABCBlob(\r\n new Blob([binary], { type: manager.VFS.guessMIMEType(assetId) || 'application/octet-stream' })\r\n );\r\n const autoPlay = previous?.autoPlay ?? false;\r\n const result = await attachZABCAnimationsToSceneNode(this, parsed, {\r\n sourcePath: assetId,\r\n autoPlay,\r\n replaceAnimationNames: []\r\n });\r\n geometryCacheBindings.set(this, {\r\n assetId,\r\n autoPlay,\r\n animationNames: result.animationNames\r\n });\r\n }\r\n },\r\n {\r\n name: 'GeometryCacheAutoPlay',\r\n description: 'If true, plays the geometry cache automatically when loaded',\r\n type: 'bool',\r\n default: false,\r\n options: {\r\n group: 'Animation',\r\n label: 'Cache AutoPlay'\r\n },\r\n isValid(this: SceneNode) {\r\n return this !== this.scene?.rootNode && hasMeshDescendants(this);\r\n },\r\n get(this: SceneNode, value) {\r\n value.bool[0] = geometryCacheBindings.get(this)?.autoPlay ?? false;\r\n },\r\n async set(this: SceneNode, value) {\r\n const current = geometryCacheBindings.get(this);\r\n if (!current) {\r\n return;\r\n }\r\n const autoPlay = !!value.bool[0];\r\n geometryCacheBindings.set(this, {\r\n assetId: current.assetId,\r\n autoPlay,\r\n animationNames: current.animationNames\r\n });\r\n for (const name of current.animationNames) {\r\n const animation = this.animationSet.getAnimationClip(name);\r\n if (animation) {\r\n animation.autoPlay = autoPlay;\r\n if (autoPlay) {\r\n this.animationSet.playAnimation(name, { repeat: 0 });\r\n } else if (this.animationSet.isPlayingAnimation(name)) {\r\n this.animationSet.stopAnimation(name);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'Animations',\r\n description: 'Animation clips which affect this object or children',\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 description: 'Skeleton references used by the node animations',\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 description: 'First script file path which is attached to this node',\r\n type: 'object',\r\n options: {\r\n mimeTypes: ['text/x-typescript']\r\n },\r\n isHidden() {\r\n return true;\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: 'Scripts',\r\n description: 'All script file paths which are attached to this node',\r\n type: 'object_array',\r\n options: {\r\n objectTypes: [ScriptAttachment]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n getDefaultValue(this: SceneNode) {\r\n return this.scripts;\r\n },\r\n isNullable() {\r\n return false;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object = this.scripts;\r\n },\r\n set(this: SceneNode, value) {\r\n this.scripts = (value.object as ScriptAttachment[]) ?? [];\r\n },\r\n create() {\r\n return new ScriptAttachment();\r\n },\r\n add(this: SceneNode, value, index) {\r\n const attachments = this.scripts;\r\n attachments.splice(\r\n index ?? attachments.length,\r\n 0,\r\n (value.object?.[0] as ScriptAttachment) ?? new ScriptAttachment()\r\n );\r\n this.scripts = attachments;\r\n },\r\n delete(this: SceneNode, index) {\r\n const attachments = this.scripts;\r\n if (index >= 0 && index < attachments.length) {\r\n attachments.splice(index, 1);\r\n this.scripts = attachments;\r\n }\r\n }\r\n },\r\n {\r\n name: 'ScriptConfig',\r\n description: 'Configuration object passed to the attached script',\r\n type: 'object',\r\n options: { objectTypes: [JSONData, JSONArray] },\r\n isHidden() {\r\n return true;\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !!this.script;\r\n },\r\n get(this: SceneNode, value) {\r\n const config = normalizeScriptAttachmentConfig(this.scriptConfig);\r\n value.object[0] =\r\n config == null\r\n ? null\r\n : Array.isArray(config)\r\n ? new JSONArray(null, config)\r\n : new JSONData(null, config);\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as\r\n | JSONData\r\n | JSONArray\r\n | Record<string, unknown>\r\n | unknown[]\r\n | null\r\n | undefined;\r\n this.scriptConfig =\r\n data instanceof JSONData || data instanceof JSONArray\r\n ? normalizeScriptAttachmentConfig(data.data)\r\n : normalizeScriptAttachmentConfig(data);\r\n }\r\n },\r\n {\r\n name: 'ScriptConfigs',\r\n description: 'Per-script configuration array for all attached scripts',\r\n type: 'object',\r\n options: { objectTypes: [JSONArray] },\r\n getDefaultValue(this: SceneNode) {\r\n return this.scriptConfigs;\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return this.scripts.length > 0;\r\n },\r\n get(this: SceneNode, value) {\r\n value.object[0] = this.scriptConfigs.length > 0 ? new JSONArray(null, this.scriptConfigs) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as JSONArray | unknown[] | null | undefined;\r\n this.scriptConfigs = data instanceof JSONArray ? data.data : Array.isArray(data) ? data : [];\r\n }\r\n },\r\n {\r\n name: 'Metadata',\r\n description: 'Meta data for this node',\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 const data = value?.object[0] as JSONData | Record<string, unknown> | null | undefined;\r\n this.metaData = data instanceof JSONData ? data.data : (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":["geometryCacheBindings","WeakMap","normalizeSerializedSceneNodeData","data","Array","isArray","ClassName","Object","serialized","objectData","hasMeshDescendants","node","hasMesh","iterate","child","isMesh","restoreGeometryCacheMeshes","tasks","push","restoreGeometryCacheMeshBinding","length","Promise","all","clearGeometryCacheBinding","previous","get","name","animationNames","animationSet","isPlayingAnimation","stopAnimation","deleteAnimation","delete","getSceneNodeClass","manager","ctor","SceneNode","createFunc","ctx","init","scene","Scene","prefabId","prefabData","loadPrefabContent","nodeData","applyPatch","patch","tmpNode","DRef","remove","sceneNode","deserializeObject","parent","rootNode","dispose","obj","loadProps","assetId","fetchedModel","fetchModel","group","originalAssetId","getAssetId","setAssetId","baseNodeData","serializeObject","deserializeObjectProps","getInitParams","flags","undefined","diff","ASSERT","saveProps","baseNode","originalObjectAssetId","originalBaseAssetId","getProps","defineProps","description","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","children","sealed","i","includes","console","error","label","mimeTypes","isValid","trim","binary","assetManager","fetchBinaryData","parsed","parseZABCBlob","Blob","VFS","guessMIMEType","autoPlay","result","attachZABCAnimationsToSceneNode","sourcePath","replaceAnimationNames","current","animation","getAnimationClip","playAnimation","repeat","readonly","objectTypes","AnimationClip","getAnimationNames","map","ani","tracks","track","embedded","addTrack","NodeTranslationTrack","NodeScaleTrack","NodeRotationTrack","editorMode","index","skeletons","v","forEach","splice","isNullable","script","ScriptAttachment","scripts","create","add","attachments","JSONData","JSONArray","config","normalizeScriptAttachmentConfig","scriptConfig","scriptConfigs","metaData","getGraphNodeClass","GraphNode"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particle.js","sources":["../../../../src/utility/serialization/scene/particle.ts"],"sourcesContent":["import { GraphNode, type EmitterBehavior, type EmitterShape } from '../../../scene';\nimport type { SceneNode } from '../../../scene/scene_node';\nimport { ParticleSystem } from '../../../scene/particlesys';\nimport { defineProps, type SerializableClass } from '../types';\nimport { ParticleMaterial } from '../../../material';\n\n/** @internal */\nexport function getParticleNodeClass(): SerializableClass {\n return {\n ctor: ParticleSystem,\n name: 'ParticleSystem',\n parent: GraphNode,\n createFunc(ctx: SceneNode) {\n const node = new ParticleSystem(ctx.scene!);\n node.parent = ctx;\n return { obj: node };\n },\n getProps() {\n return defineProps([\n {\n name: 'WorldSpace',\n description: 'If true, particle positions will be calculated in world space',\n type: 'bool',\n default: true,\n get(this: ParticleSystem, value) {\n value.bool[0] = this.worldSpace;\n },\n set(this: ParticleSystem, value) {\n this.worldSpace = value.bool[0];\n }\n },\n {\n name: 'MaxParticleCount',\n description: 'Maximum particle count',\n type: 'int',\n default: 100,\n get(this: ParticleSystem, value) {\n value.num[0] = this.maxParticleCount;\n },\n set(this: ParticleSystem, value) {\n this.maxParticleCount = value.num[0];\n }\n },\n {\n name: 'EmitInterval',\n description: 'Particle emit interval in millionseconds',\n type: 'int',\n default: 100,\n get(this: ParticleSystem, value) {\n value.num[0] = this.emitInterval;\n },\n set(this: ParticleSystem, value) {\n this.emitInterval = value.num[0];\n }\n },\n {\n name: 'EmitCount',\n description: 'How many particles will be emitted at once',\n type: 'int',\n default: 1,\n get(this: ParticleSystem, value) {\n value.num[0] = this.emitCount;\n },\n set(this: ParticleSystem, value) {\n this.emitCount = value.num[0];\n }\n },\n {\n name: 'Gravity',\n description: 'Gravity acceleration applied to particles',\n type: 'vec3',\n default: [0, 0, 0],\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n const gravity = this.gravity;\n value.num[0] = gravity.x;\n value.num[1] = gravity.y;\n value.num[2] = gravity.z;\n },\n set(this: ParticleSystem, value) {\n this.gravity.setXYZ(value.num[0], value.num[1], value.num[2]);\n }\n },\n {\n name: 'Wind',\n description: 'Wind velocity applied to particles',\n type: 'vec3',\n default: [0, 0, 0],\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n const wind = this.wind;\n value.num[0] = wind.x;\n value.num[1] = wind.y;\n value.num[2] = wind.z;\n },\n set(this: ParticleSystem, value) {\n this.wind.setXYZ(value.num[0], value.num[1], value.num[2]);\n }\n },\n {\n name: 'Scalar',\n description: 'Size scale for particles',\n type: 'float',\n default: 1,\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.scalar;\n },\n set(this: ParticleSystem, value) {\n this.scalar = value.num[0];\n }\n },\n {\n name: 'Aspect',\n description: 'Particle aspect ratio',\n type: 'float',\n default: 1,\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.aspect;\n },\n set(this: ParticleSystem, value) {\n this.aspect = value.num[0];\n }\n },\n {\n name: 'AirResistence',\n description: 'If true, particles are slowed by air resistance',\n type: 'bool',\n default: false,\n get(this: ParticleSystem, value) {\n value.bool[0] = this.airResistence;\n },\n set(this: ParticleSystem, value) {\n this.airResistence = value.bool[0];\n }\n },\n {\n name: 'JitterSpeed',\n description: 'Speed of random particle jitter',\n type: 'float',\n default: 1,\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.jitterSpeed;\n },\n set(this: ParticleSystem, value) {\n this.jitterSpeed = value.num[0];\n }\n },\n {\n name: 'JitterPower',\n description: 'Strength of random particle jitter',\n type: 'float',\n default: 0,\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.jitterPower;\n },\n set(this: ParticleSystem, value) {\n this.jitterPower = value.num[0];\n }\n },\n {\n name: 'EmitterShape',\n description: 'Shape of the particle emission volume',\n type: 'string',\n options: {\n enum: {\n labels: ['Point', 'Sphere', 'Box', 'Cylinder', 'Cone'],\n values: ['point', 'sphere', 'box', 'cylinder', 'cone']\n }\n },\n default: 'point',\n get(this: ParticleSystem, value) {\n value.str[0] = this.emitterShape;\n },\n set(this: ParticleSystem, value) {\n this.emitterShape = value.str[0] as EmitterShape;\n }\n },\n {\n name: 'EmitterBehavior',\n description: 'Whether particles spawn on the surface or throughout the volume',\n type: 'string',\n options: {\n enum: {\n labels: ['Surface', 'Volume'],\n values: ['surface', 'volume']\n }\n },\n default: 'surface',\n get(this: ParticleSystem, value) {\n value.str[0] = this.emitterBehavior;\n },\n set(this: ParticleSystem, value) {\n this.emitterBehavior = value.str[0] as EmitterBehavior;\n }\n },\n {\n name: 'Directional',\n description: 'If true, emitted particles follow the emitter direction',\n type: 'bool',\n default: false,\n get(this: ParticleSystem, value) {\n value.bool[0] = this.directional;\n },\n set(this: ParticleSystem, value) {\n this.directional = value.bool[0];\n }\n },\n {\n name: 'Rotation',\n description: 'Min/Max value of particle rotation',\n type: 'vec2',\n default: [0, 0],\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.particleRotationMin;\n value.num[1] = this.particleRotationMax;\n },\n set(this: ParticleSystem, value) {\n this.particleRotationMin = value.num[0];\n this.particleRotationMax = value.num[1];\n }\n },\n {\n name: 'ConeRadius',\n description: 'min/max radius of particle emit cone',\n type: 'vec2',\n default: [0, 0.1],\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.emitterConeRadiusMin;\n value.num[1] = this.emitterConeRadiusMax;\n },\n set(this: ParticleSystem, value) {\n this.emitterConeRadiusMin = value.num[0];\n this.emitterConeRadiusMax = value.num[1];\n }\n },\n {\n name: 'Velocity',\n description: 'min/max value of initial speed of particles',\n type: 'vec2',\n default: [2, 3],\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.particleVelocityMin;\n value.num[1] = this.particleVelocityMax;\n },\n set(this: ParticleSystem, value) {\n this.particleVelocityMin = value.num[0];\n this.particleVelocityMax = value.num[1];\n }\n },\n {\n name: 'Life',\n description: 'min/max value of particle life in seconds',\n type: 'vec2',\n default: [1, 1.5],\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.particleLifeMin;\n value.num[1] = this.particleLifeMax;\n },\n set(this: ParticleSystem, value) {\n this.particleLifeMin = value.num[0];\n this.particleLifeMax = value.num[1];\n }\n },\n {\n name: 'Size1',\n description: 'min/max value of initial size of particles',\n type: 'vec2',\n default: [0.4, 0.5],\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.particleSize1Min;\n value.num[1] = this.particleSize1Max;\n },\n set(this: ParticleSystem, value) {\n this.particleSize1Min = value.num[0];\n this.particleSize1Max = value.num[1];\n }\n },\n {\n name: 'Size2',\n description: 'min/max value of end size of particles',\n type: 'vec2',\n default: [0, 0.1],\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.particleSize2Min;\n value.num[1] = this.particleSize2Max;\n },\n set(this: ParticleSystem, value) {\n this.particleSize2Min = value.num[0];\n this.particleSize2Max = value.num[1];\n }\n },\n {\n name: 'Acceleration',\n description: 'min/max value of particle speed acceleration',\n type: 'vec2',\n default: [-0.01, -0.02],\n options: {\n animatable: true\n },\n get(this: ParticleSystem, value) {\n value.num[0] = this.particleAccelMin;\n value.num[1] = this.particleAccelMax;\n },\n set(this: ParticleSystem, value) {\n this.particleAccelMin = value.num[0];\n this.particleAccelMax = value.num[1];\n }\n },\n {\n name: 'Material',\n description: 'Material object',\n type: 'object',\n default: null,\n options: {\n objectTypes: [ParticleMaterial]\n },\n get(this: ParticleSystem, value) {\n value.object[0] = this.getMaterial();\n },\n set(this: ParticleSystem, value) {\n if (!value.object[0]) {\n this.material = null;\n } else if (value.object[0] instanceof ParticleMaterial) {\n this.material = value.object[0];\n } else {\n console.error('Invalid material type');\n }\n }\n }\n ]);\n }\n };\n}\n"],"names":["getParticleNodeClass","ctor","ParticleSystem","name","parent","GraphNode","createFunc","ctx","node","scene","obj","getProps","defineProps","description","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 description: 'If true, particle positions will be calculated in world space',\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 description: 'Maximum particle count',\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 description: 'Particle emit interval in millionseconds',\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 description: 'How many particles will be emitted at once',\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 description: 'Gravity acceleration applied to particles',\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 description: 'Wind velocity applied to particles',\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 description: 'Size scale for particles',\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 description: 'Particle aspect ratio',\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 description: 'If true, particles are slowed by air resistance',\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 description: 'Speed of random particle jitter',\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 description: 'Strength of random particle jitter',\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 description: 'Shape of the particle emission volume',\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 description: 'Whether particles spawn on the surface or throughout the volume',\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 description: 'If true, emitted particles follow the emitter direction',\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 description: 'Min/Max value of particle 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 description: 'min/max radius of particle emit cone',\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 description: 'min/max value of initial speed of particles',\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 description: 'min/max value of particle life in seconds',\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 description: 'min/max value of initial size of particles',\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 description: 'min/max value of end size of particles',\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 description: 'min/max value of particle speed 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 description: 'Material object',\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","description","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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"}
|