@zephyr3d/scene 0.9.6 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/joint_dynamics/controller.js +92 -32
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/convex_collider.js +320 -0
- package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +57 -19
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +71 -27
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics_modifier.js +21 -20
- package/dist/animation/joint_dynamics_modifier.js.map +1 -1
- package/dist/animation/skeleton.js +7 -10
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/app/engine.js +134 -140
- package/dist/app/engine.js.map +1 -1
- package/dist/app/scriptregistry.js +47 -16
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +3 -1
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/model.js +346 -7
- package/dist/asset/model.js.map +1 -1
- package/dist/avatar/wardrobe.js +20 -16
- package/dist/avatar/wardrobe.js.map +1 -1
- package/dist/camera/camera.js +416 -210
- package/dist/camera/camera.js.map +1 -1
- package/dist/index.d.ts +1349 -621
- package/dist/index.js +6 -11
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/lambert.js +1 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +23 -1
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +178 -23
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js +4 -4
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +2 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +2 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +63 -16
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +105 -32
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -6
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +1 -1
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +276 -65
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +3 -3
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mixins/vertexcolor.js +2 -2
- package/dist/material/mixins/vertexcolor.js.map +1 -1
- package/dist/material/mtoon.js +574 -0
- package/dist/material/mtoon.js.map +1 -0
- package/dist/material/pbrblueprint.js +499 -336
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js +118 -100
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +324 -294
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/subsurfaceprofile.js +812 -0
- package/dist/material/subsurfaceprofile.js.map +1 -0
- package/dist/material/unlit.js +1 -1
- package/dist/material/unlit.js.map +1 -1
- package/dist/posteffect/compositor.js +46 -11
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/ssr.js +422 -96
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +1053 -0
- package/dist/posteffect/sss.js.map +1 -0
- package/dist/posteffect/taa.js +61 -60
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/abuffer_oit.js +63 -12
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/cluster_light.js +6 -5
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/drawable.js +1 -5
- package/dist/render/drawable.js.map +1 -1
- package/dist/render/drawable_mixin.js +2 -1
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +2 -1
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +2 -1
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +2 -1
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/lightpass.js +110 -23
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/render_queue.js +51 -8
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +80 -66
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js +8 -0
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +481 -95
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/history_resource_manager.js +55 -0
- package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +3 -1
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +10 -4
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/sky.js +31 -1
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js +23 -5
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +4 -2
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +3 -1
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +11 -1
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/light.js +21 -3
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +29 -14
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/meshdrawable.js +6 -0
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +5 -2
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +5 -3
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +3 -1
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene.js +6 -5
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +4 -2
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grassmaterial.js +2 -1
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +4 -2
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +4 -2
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/shadow.js +26 -393
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shadow/esm.js +112 -12
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +2 -2
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +19 -10
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/shader.js +58 -7
- package/dist/shadow/shader.js.map +1 -1
- package/dist/shadow/shadow_impl.js +6 -0
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +229 -0
- package/dist/shadow/shadow_region.js.map +1 -0
- package/dist/shadow/shadowmapper.js +67 -59
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/vsm.js +45 -19
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +8 -8
- package/dist/utility/blueprint/common/constants.js.map +1 -1
- package/dist/utility/blueprint/material/pbr.js +31 -4
- package/dist/utility/blueprint/material/pbr.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +1 -17
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/serialization/manager.js +327 -359
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +5 -2
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -1
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +249 -54
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +37 -1
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +42 -3
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +1112 -646
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +7 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +31 -12
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +4 -1
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +3 -1
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +18 -0
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +6 -3
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +5 -2
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +3 -1
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +4 -1
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/textures/ltcdata.js +6 -0
- package/dist/utility/textures/ltcdata.js.map +1 -0
- package/dist/utility/textures/ltclut.js +61 -0
- package/dist/utility/textures/ltclut.js.map +1 -0
- package/dist/values.js +9 -1
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
|
@@ -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, SerializedMorphTargetGroup } 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, guessMimeType, radian2degree } from '@zephyr3d/base';\r\nimport { GraphNode } from '../../../scene';\r\nimport type { ResourceManager } from '../manager';\r\nimport {\r\n AnimationClip,\r\n JointDynamicsModifier,\r\n NodeRotationTrack,\r\n NodeScaleTrack,\r\n NodeTranslationTrack\r\n} 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\nimport { getJointDynamicsModifierSkeleton, setJointDynamicsModifierSkeleton } from './animation';\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 ?? 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 let prefabId = obj.prefabId;\r\n const assetId = manager.getAssetId(obj);\r\n let patch: DiffPatch | undefined = undefined;\r\n if (prefabId && guessMimeType(prefabId) === 'application/vnd.zephyr3d.prefab+json') {\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 } else {\r\n prefabId = '';\r\n }\r\n if (!prefabId && assetId) {\r\n const baseNode = (await manager.fetchModel(assetId, obj.scene!)) ?? 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 readonly: true,\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 readonly: true,\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 isPersistent(this: SceneNode) {\r\n return (\r\n !this._prefabId || guessMimeType(this._prefabId) === 'application/vnd.zephyr3d.prefab+json'\r\n );\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: 'MorphTargetGroups',\r\n description: 'Serialized model-level morph target groups for this node',\r\n type: 'object',\r\n phase: 10,\r\n options: { objectTypes: [JSONArray] },\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return (\r\n !this._prefabId || guessMimeType(this._prefabId) === 'application/vnd.zephyr3d.prefab+json'\r\n );\r\n },\r\n get(this: SceneNode, value) {\r\n const groups = this.getSerializedMorphTargetGroups();\r\n value.object[0] = groups.length > 0 ? new JSONArray(null, groups) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as JSONArray | SerializedMorphTargetGroup[] | null | undefined;\r\n if (data) {\r\n this.setSerializedMorphTargetGroups(data instanceof JSONArray ? data.data : data);\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 isPersistent(this: SceneNode) {\r\n return (\r\n !this._prefabId || guessMimeType(this._prefabId) === 'application/vnd.zephyr3d.prefab+json'\r\n );\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: 'Rigs',\r\n description: 'Shared skeleton rigs 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 isPersistent(this: SceneNode) {\r\n return (\r\n !this._prefabId || guessMimeType(this._prefabId) === 'application/vnd.zephyr3d.prefab+json'\r\n );\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n value.object = [...rigs];\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n animationSet.rigs.forEach((v) => v.dispose());\r\n animationSet.rigs.splice(0, animationSet.rigs.length);\r\n animationSet.rigs.push(...(value.object as any[]).map((v) => new DRef(v)));\r\n }\r\n },\r\n {\r\n name: 'Skeletons',\r\n description: 'Skin bindings used by the node animations',\r\n type: 'object_array',\r\n phase: 2,\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return (\r\n !this._prefabId || guessMimeType(this._prefabId) === 'application/vnd.zephyr3d.prefab+json'\r\n );\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 for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig && !animationSet.rigs.some((ref) => ref.get() === rig)) {\r\n animationSet.rigs.push(new DRef(rig));\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'JointDynamics',\r\n description: 'Joint dynamics systems which affect this object or children',\r\n type: 'object_array',\r\n phase: 3,\r\n readonly: true,\r\n options: {\r\n objectTypes: [JointDynamicsModifier]\r\n },\r\n isPersistent(this: SceneNode) {\r\n return (\r\n !this._prefabId || guessMimeType(this._prefabId) === 'application/vnd.zephyr3d.prefab+json'\r\n );\r\n },\r\n getDefaultValue(this: SceneNode) {\r\n const animationSet = this.animationSet;\r\n const jdm: JointDynamicsModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const sk of rigs) {\r\n for (const mod of sk!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n setJointDynamicsModifierSkeleton(mod, sk!);\r\n jdm.push(mod);\r\n }\r\n }\r\n }\r\n return jdm;\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n const jdm: JointDynamicsModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const sk of rigs) {\r\n for (const mod of sk!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n setJointDynamicsModifierSkeleton(mod, sk!);\r\n jdm.push(mod);\r\n }\r\n }\r\n }\r\n value.object = jdm;\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n for (const sk of animationSet.rigs) {\r\n const modifiers = sk.get()!.modifiers;\r\n for (let i = modifiers.length - 1; i >= 0; i--) {\r\n if (modifiers[i] instanceof JointDynamicsModifier) {\r\n modifiers.splice(i, 1);\r\n }\r\n }\r\n }\r\n for (const mod of value.object) {\r\n if (!(mod instanceof JointDynamicsModifier)) {\r\n continue;\r\n }\r\n const skeleton = getJointDynamicsModifierSkeleton(mod);\r\n if (skeleton && animationSet.rigs.some((sk) => sk.get() === skeleton)) {\r\n skeleton.modifiers.push(mod);\r\n setJointDynamicsModifierSkeleton(mod, skeleton);\r\n continue;\r\n }\r\n for (const sk of animationSet.rigs) {\r\n if (\r\n mod.jointDynamicsSystem.chainConfig.chains.every((chain) =>\r\n sk.get()!.joints.includes(chain.start)\r\n )\r\n ) {\r\n sk.get()!.modifiers.push(mod);\r\n setJointDynamicsModifierSkeleton(mod, sk.get()!);\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const animationSet = this.animationSet;\r\n let n = 0;\r\n for (const sk of animationSet.rigs) {\r\n for (const mod of sk.get()!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n if (n === index) {\r\n const index = sk.get()!.modifiers.indexOf(mod);\r\n sk.get()!.modifiers.splice(index, 1);\r\n return;\r\n }\r\n n++;\r\n }\r\n }\r\n }\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","originalAssetId","getAssetId","setAssetId","baseNodeData","serializeObject","deserializeObjectProps","getInitParams","flags","undefined","guessMimeType","diff","ASSERT","saveProps","baseNode","originalObjectAssetId","originalBaseAssetId","getProps","defineProps","description","type","readonly","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","_prefabId","object","children","sealed","i","includes","console","error","objectTypes","JSONArray","groups","getSerializedMorphTargetGroups","setSerializedMorphTargetGroups","group","label","mimeTypes","isValid","trim","binary","assetManager","fetchBinaryData","parsed","parseZABCBlob","Blob","VFS","guessMIMEType","autoPlay","result","attachZABCAnimationsToSceneNode","sourcePath","replaceAnimationNames","current","animation","getAnimationClip","playAnimation","repeat","AnimationClip","getAnimationNames","map","ani","tracks","track","embedded","addTrack","NodeTranslationTrack","NodeScaleTrack","NodeRotationTrack","editorMode","index","rigs","Set","v","binding","skeletons","rig","add","forEach","splice","some","ref","JointDynamicsModifier","jdm","sk","mod","modifiers","setJointDynamicsModifierSkeleton","skeleton","getJointDynamicsModifierSkeleton","jointDynamicsSystem","chainConfig","chains","every","chain","joints","start","n","indexOf","isNullable","script","ScriptAttachment","scripts","create","attachments","JSONData","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, SerializedMorphTargetGroup } 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 {\r\n applyPatch,\r\n ASSERT,\r\n degree2radian,\r\n diff,\r\n DRef,\r\n guessMimeType,\r\n mimeTypeOf,\r\n radian2degree\r\n} from '@zephyr3d/base';\r\nimport { GraphNode } from '../../../scene';\r\nimport type { ResourceManager } from '../manager';\r\nimport {\r\n AnimationClip,\r\n JointDynamicsModifier,\r\n NodeRotationTrack,\r\n NodeScaleTrack,\r\n NodeTranslationTrack\r\n} 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\nimport { getJointDynamicsModifierSkeleton, setJointDynamicsModifierSkeleton } from './animation';\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 prefabContent = await manager.loadPrefabContent(init.prefabId);\r\n if (!prefabContent?.data) {\r\n console.warn(`Skip scene node because prefab asset is missing: ${init.prefabId}`);\r\n return { obj: null, loadProps: false };\r\n }\r\n const prefabData = prefabContent.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 let fetchedModel: SceneNode | null = null;\r\n try {\r\n fetchedModel = (await manager.fetchModel(init.assetId, scene!)) ?? null;\r\n } catch (err) {\r\n console.warn(`Skip scene node because model asset failed to load: ${init.assetId}: ${err}`);\r\n fetchedModel = null;\r\n }\r\n const sceneNode = fetchedModel ?? 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 } else {\r\n console.warn(`Skip scene node because model asset is missing: ${init.assetId}`);\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 let prefabId = obj.prefabId;\r\n const assetId = manager.getAssetId(obj);\r\n let patch: DiffPatch | undefined = undefined;\r\n if (prefabId && guessMimeType(prefabId) === mimeTypeOf('.zprefab')) {\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 } else {\r\n prefabId = '';\r\n }\r\n if (!prefabId && assetId) {\r\n const baseNode = (await manager.fetchModel(assetId, obj.scene!)) ?? 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 readonly: true,\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 readonly: true,\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 isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\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: 'MorphTargetGroups',\r\n description: 'Serialized model-level morph target groups for this node',\r\n type: 'object',\r\n phase: 10,\r\n options: { objectTypes: [JSONArray] },\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n const groups = this.getSerializedMorphTargetGroups();\r\n value.object[0] = groups.length > 0 ? new JSONArray(null, groups) : null;\r\n },\r\n set(this: SceneNode, value) {\r\n const data = value?.object[0] as JSONArray | SerializedMorphTargetGroup[] | null | undefined;\r\n if (data) {\r\n this.setSerializedMorphTargetGroups(data instanceof JSONArray ? data.data : data);\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: [mimeTypeOf('.zabc')]\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 isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\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: 'Rigs',\r\n description: 'Shared skeleton rigs 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 isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n value.object = [...rigs];\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n animationSet.rigs.forEach((v) => v.dispose());\r\n animationSet.rigs.splice(0, animationSet.rigs.length);\r\n animationSet.rigs.push(...(value.object as any[]).map((v) => new DRef(v)));\r\n }\r\n },\r\n {\r\n name: 'Skeletons',\r\n description: 'Skin bindings used by the node animations',\r\n type: 'object_array',\r\n phase: 2,\r\n isHidden() {\r\n return true;\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\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 for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig && !animationSet.rigs.some((ref) => ref.get() === rig)) {\r\n animationSet.rigs.push(new DRef(rig));\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'JointDynamics',\r\n description: 'Joint dynamics systems which affect this object or children',\r\n type: 'object_array',\r\n phase: 3,\r\n readonly: true,\r\n options: {\r\n objectTypes: [JointDynamicsModifier]\r\n },\r\n isPersistent(this: SceneNode) {\r\n return !this._prefabId || guessMimeType(this._prefabId) === mimeTypeOf('.zprefab');\r\n },\r\n getDefaultValue(this: SceneNode) {\r\n const animationSet = this.animationSet;\r\n const jdm: JointDynamicsModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const sk of rigs) {\r\n for (const mod of sk!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n setJointDynamicsModifierSkeleton(mod, sk!);\r\n jdm.push(mod);\r\n }\r\n }\r\n }\r\n return jdm;\r\n },\r\n get(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n const jdm: JointDynamicsModifier[] = [];\r\n const rigs = new Set(animationSet.rigs.map((v) => v.get()));\r\n for (const binding of animationSet.skeletons) {\r\n const rig = binding.get()?.rig;\r\n if (rig) {\r\n rigs.add(rig);\r\n }\r\n }\r\n for (const sk of rigs) {\r\n for (const mod of sk!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n setJointDynamicsModifierSkeleton(mod, sk!);\r\n jdm.push(mod);\r\n }\r\n }\r\n }\r\n value.object = jdm;\r\n },\r\n set(this: SceneNode, value) {\r\n const animationSet = this.animationSet;\r\n for (const sk of animationSet.rigs) {\r\n const modifiers = sk.get()!.modifiers;\r\n for (let i = modifiers.length - 1; i >= 0; i--) {\r\n if (modifiers[i] instanceof JointDynamicsModifier) {\r\n modifiers.splice(i, 1);\r\n }\r\n }\r\n }\r\n for (const mod of value.object) {\r\n if (!(mod instanceof JointDynamicsModifier)) {\r\n continue;\r\n }\r\n const skeleton = getJointDynamicsModifierSkeleton(mod);\r\n if (skeleton && animationSet.rigs.some((sk) => sk.get() === skeleton)) {\r\n skeleton.modifiers.push(mod);\r\n setJointDynamicsModifierSkeleton(mod, skeleton);\r\n continue;\r\n }\r\n for (const sk of animationSet.rigs) {\r\n if (\r\n mod.jointDynamicsSystem.chainConfig.chains.every((chain) =>\r\n sk.get()!.joints.includes(chain.start)\r\n )\r\n ) {\r\n sk.get()!.modifiers.push(mod);\r\n setJointDynamicsModifierSkeleton(mod, sk.get()!);\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n delete(this: SceneNode, index) {\r\n const animationSet = this.animationSet;\r\n let n = 0;\r\n for (const sk of animationSet.rigs) {\r\n for (const mod of sk.get()!.modifiers) {\r\n if (mod instanceof JointDynamicsModifier) {\r\n if (n === index) {\r\n const index = sk.get()!.modifiers.indexOf(mod);\r\n sk.get()!.modifiers.splice(index, 1);\r\n return;\r\n }\r\n n++;\r\n }\r\n }\r\n }\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","prefabContent","loadPrefabContent","console","warn","obj","loadProps","prefabData","nodeData","applyPatch","patch","tmpNode","DRef","remove","sceneNode","deserializeObject","parent","rootNode","dispose","assetId","fetchedModel","fetchModel","err","originalAssetId","getAssetId","setAssetId","baseNodeData","serializeObject","deserializeObjectProps","getInitParams","flags","undefined","guessMimeType","mimeTypeOf","diff","ASSERT","saveProps","baseNode","originalObjectAssetId","originalBaseAssetId","getProps","defineProps","description","type","readonly","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","_prefabId","object","children","sealed","i","includes","error","objectTypes","JSONArray","groups","getSerializedMorphTargetGroups","setSerializedMorphTargetGroups","group","label","mimeTypes","isValid","trim","binary","assetManager","fetchBinaryData","parsed","parseZABCBlob","Blob","VFS","guessMIMEType","autoPlay","result","attachZABCAnimationsToSceneNode","sourcePath","replaceAnimationNames","current","animation","getAnimationClip","playAnimation","repeat","AnimationClip","getAnimationNames","map","ani","tracks","track","embedded","addTrack","NodeTranslationTrack","NodeScaleTrack","NodeRotationTrack","editorMode","index","rigs","Set","v","binding","skeletons","rig","add","forEach","splice","some","ref","JointDynamicsModifier","jdm","sk","mod","modifiers","setJointDynamicsModifierSkeleton","skeleton","getJointDynamicsModifierSkeleton","jointDynamicsSystem","chainConfig","chains","every","chain","joints","start","n","indexOf","isNullable","script","ScriptAttachment","scripts","create","attachments","JSONData","config","normalizeScriptAttachmentConfig","scriptConfig","scriptConfigs","metaData","getGraphNodeClass","GraphNode"],"mappings":"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"}
|
|
@@ -9,18 +9,20 @@ import '../../../material/lambert.js';
|
|
|
9
9
|
import '../../../material/blinn.js';
|
|
10
10
|
import '../../../material/unlit.js';
|
|
11
11
|
import { ParticleMaterial } from '../../../material/particle.js';
|
|
12
|
+
import '../../../material/subsurfaceprofile.js';
|
|
12
13
|
import '../../../material/meshmaterial.js';
|
|
13
14
|
import '../../../material/grassmaterial.js';
|
|
14
15
|
import '../../../material/terrain-cm.js';
|
|
15
16
|
import '../../../material/pbrmr.js';
|
|
16
17
|
import '../../../material/pbrsg.js';
|
|
18
|
+
import '../../../material/mtoon.js';
|
|
17
19
|
import '../../../material/pbrblueprint.js';
|
|
18
20
|
import '../../../material/sprite.js';
|
|
19
21
|
import '../../../material/sprite_std.js';
|
|
20
|
-
import '../../../material/msdf_text.js';
|
|
21
22
|
import { defineProps } from '../types.js';
|
|
22
23
|
import '../../blueprint/material/texture.js';
|
|
23
24
|
import '../../../render/rendergraph/forward_plus_builder.js';
|
|
25
|
+
import '../../../render/lightpass.js';
|
|
24
26
|
import '../../../render/sky.js';
|
|
25
27
|
import '../../../render/clipmap.js';
|
|
26
28
|
import '../../../shaders/atmosphere.js';
|
|
@@ -29,6 +31,7 @@ import '../../../shadow/shadowmapper.js';
|
|
|
29
31
|
import '../../../scene/mesh.js';
|
|
30
32
|
import '../../../scene/basesprite.js';
|
|
31
33
|
import '../../../scene/meshdrawable.js';
|
|
34
|
+
import '../../../material/msdf_text.js';
|
|
32
35
|
import '../../../scene/water.js';
|
|
33
36
|
import '../../../scene/scene_node.js';
|
|
34
37
|
import { ParticleSystem } from '../../../scene/particlesys.js';
|
|
@@ -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 { 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,iBACO,SAASA,oBAAAA,GAAAA;IACd,OAAO;QACLC,IAAMC,EAAAA,cAAAA;QACNC,IAAM,EAAA,gBAAA;QACNC,MAAQC,EAAAA,SAAAA;AACRC,QAAAA,UAAAA,CAAAA,CAAWC,GAAc,EAAA;AACvB,YAAA,MAAMC,IAAO,GAAA,IAAIN,cAAeK,CAAAA,GAAAA,CAAIE,KAAK,CAAA;AACzCD,YAAAA,IAAAA,CAAKJ,MAAM,GAAGG,GAAAA;YACd,OAAO;gBAAEG,GAAKF,EAAAA;AAAK,aAAA;AACrB,SAAA;AACAG,QAAAA,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,WAAY,CAAA;AACjB,gBAAA;oBACET,IAAM,EAAA,YAAA;oBACNU,WAAa,EAAA,+DAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,IAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,UAAU;AACjC,qBAAA;AACAC,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACE,UAAU,GAAGF,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACjC;AACF,iBAAA;AACA,gBAAA;oBACEf,IAAM,EAAA,kBAAA;oBACNU,WAAa,EAAA,wBAAA;oBACbC,IAAM,EAAA,KAAA;oBACNC,OAAS,EAAA,GAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,gBAAgB;AACtC,qBAAA;AACAF,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACK,gBAAgB,GAAGL,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACtC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,cAAA;oBACNU,WAAa,EAAA,0CAAA;oBACbC,IAAM,EAAA,KAAA;oBACNC,OAAS,EAAA,GAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACE,YAAY;AAClC,qBAAA;AACAH,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACM,YAAY,GAAGN,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AAClC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,WAAA;oBACNU,WAAa,EAAA,4CAAA;oBACbC,IAAM,EAAA,KAAA;oBACNC,OAAS,EAAA,CAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACG,SAAS;AAC/B,qBAAA;AACAJ,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACO,SAAS,GAAGP,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC/B;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,SAAA;oBACNU,WAAa,EAAA,2CAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;oBAClBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;wBAC7B,MAAMU,OAAAA,GAAU,IAAI,CAACA,OAAO;AAC5BV,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGM,QAAQC,CAAC;AACxBX,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGM,QAAQE,CAAC;AACxBZ,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGM,QAAQG,CAAC;AAC1B,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACU,OAAO,CAACI,MAAM,CAACd,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,EAAEJ,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,EAAEJ,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAC9D;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,MAAA;oBACNU,WAAa,EAAA,oCAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;oBAClBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;wBAC7B,MAAMe,IAAAA,GAAO,IAAI,CAACA,IAAI;AACtBf,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGW,KAAKJ,CAAC;AACrBX,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGW,KAAKH,CAAC;AACrBZ,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAGW,KAAKF,CAAC;AACvB,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACe,IAAI,CAACD,MAAM,CAACd,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,EAAEJ,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,EAAEJ,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;AAC3D;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,QAAA;oBACNU,WAAa,EAAA,0BAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACY,MAAM;AAC5B,qBAAA;AACAb,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACgB,MAAM,GAAGhB,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,QAAA;oBACNU,WAAa,EAAA,uBAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACa,MAAM;AAC5B,qBAAA;AACAd,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACiB,MAAM,GAAGjB,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC5B;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,eAAA;oBACNU,WAAa,EAAA,iDAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiB,aAAa;AACpC,qBAAA;AACAf,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACkB,aAAa,GAAGlB,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACpC;AACF,iBAAA;AACA,gBAAA;oBACEf,IAAM,EAAA,aAAA;oBACNU,WAAa,EAAA,iCAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACe,WAAW;AACjC,qBAAA;AACAhB,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACmB,WAAW,GAAGnB,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACjC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,aAAA;oBACNU,WAAa,EAAA,oCAAA;oBACbC,IAAM,EAAA,OAAA;oBACNC,OAAS,EAAA,CAAA;oBACTU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACgB,WAAW;AACjC,qBAAA;AACAjB,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACoB,WAAW,GAAGpB,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACjC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,cAAA;oBACNU,WAAa,EAAA,uCAAA;oBACbC,IAAM,EAAA,QAAA;oBACNW,OAAS,EAAA;wBACPa,IAAM,EAAA;4BACJC,MAAQ,EAAA;AAAC,gCAAA,OAAA;AAAS,gCAAA,QAAA;AAAU,gCAAA,KAAA;AAAO,gCAAA,UAAA;AAAY,gCAAA;AAAO,6BAAA;4BACtDC,MAAQ,EAAA;AAAC,gCAAA,OAAA;AAAS,gCAAA,QAAA;AAAU,gCAAA,KAAA;AAAO,gCAAA,UAAA;AAAY,gCAAA;AAAO;AACxD;AACF,qBAAA;oBACAzB,OAAS,EAAA,OAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMwB,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,YAAY;AAClC,qBAAA;AACAtB,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACyB,YAAY,GAAGzB,KAAMwB,CAAAA,GAAG,CAAC,CAAE,CAAA;AAClC;AACF,iBAAA;AACA,gBAAA;oBACEtC,IAAM,EAAA,iBAAA;oBACNU,WAAa,EAAA,iEAAA;oBACbC,IAAM,EAAA,QAAA;oBACNW,OAAS,EAAA;wBACPa,IAAM,EAAA;4BACJC,MAAQ,EAAA;AAAC,gCAAA,SAAA;AAAW,gCAAA;AAAS,6BAAA;4BAC7BC,MAAQ,EAAA;AAAC,gCAAA,SAAA;AAAW,gCAAA;AAAS;AAC/B;AACF,qBAAA;oBACAzB,OAAS,EAAA,SAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMwB,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACE,eAAe;AACrC,qBAAA;AACAvB,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAAC0B,eAAe,GAAG1B,KAAMwB,CAAAA,GAAG,CAAC,CAAE,CAAA;AACrC;AACF,iBAAA;AACA,gBAAA;oBACEtC,IAAM,EAAA,aAAA;oBACNU,WAAa,EAAA,yDAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA,KAAA;AACTC,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC0B,WAAW;AAClC,qBAAA;AACAxB,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAAC2B,WAAW,GAAG3B,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AAClC;AACF,iBAAA;AACA,gBAAA;oBACEf,IAAM,EAAA,UAAA;oBACNU,WAAa,EAAA,oCAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;oBACfU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACwB,mBAAmB;AACvC5B,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACyB,mBAAmB;AACzC,qBAAA;AACA1B,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAAC4B,mBAAmB,GAAG5B,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvC,wBAAA,IAAI,CAACyB,mBAAmB,GAAG7B,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACzC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,YAAA;oBACNU,WAAa,EAAA,sCAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA;AAAI,qBAAA;oBACjBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC0B,oBAAoB;AACxC9B,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC2B,oBAAoB;AAC1C,qBAAA;AACA5B,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAAC8B,oBAAoB,GAAG9B,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACxC,wBAAA,IAAI,CAAC2B,oBAAoB,GAAG/B,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AAC1C;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,UAAA;oBACNU,WAAa,EAAA,6CAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA;AAAE,qBAAA;oBACfU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC4B,mBAAmB;AACvChC,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC6B,mBAAmB;AACzC,qBAAA;AACA9B,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACgC,mBAAmB,GAAGhC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvC,wBAAA,IAAI,CAAC6B,mBAAmB,GAAGjC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACzC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,MAAA;oBACNU,WAAa,EAAA,2CAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA;AAAI,qBAAA;oBACjBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC8B,eAAe;AACnClC,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC+B,eAAe;AACrC,qBAAA;AACAhC,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACkC,eAAe,GAAGlC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACnC,wBAAA,IAAI,CAAC+B,eAAe,GAAGnC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACrC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,OAAA;oBACNU,WAAa,EAAA,4CAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,GAAA;AAAK,wBAAA;AAAI,qBAAA;oBACnBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACgC,gBAAgB;AACpCpC,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACiC,gBAAgB;AACtC,qBAAA;AACAlC,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACoC,gBAAgB,GAAGpC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACpC,wBAAA,IAAI,CAACiC,gBAAgB,GAAGrC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACtC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,OAAA;oBACNU,WAAa,EAAA,wCAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA;AAAI,qBAAA;oBACjBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACkC,gBAAgB;AACpCtC,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACmC,gBAAgB;AACtC,qBAAA;AACApC,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACsC,gBAAgB,GAAGtC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACpC,wBAAA,IAAI,CAACmC,gBAAgB,GAAGvC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACtC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,cAAA;oBACNU,WAAa,EAAA,8CAAA;oBACbC,IAAM,EAAA,MAAA;oBACNC,OAAS,EAAA;wBAAC,KAAC;wBAAM;AAAM,qBAAA;oBACvBU,OAAS,EAAA;wBACPC,UAAY,EAAA;AACd,qBAAA;AACAV,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACoC,gBAAgB;AACpCxC,wBAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACqC,gBAAgB;AACtC,qBAAA;AACAtC,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACwC,gBAAgB,GAAGxC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACpC,wBAAA,IAAI,CAACqC,gBAAgB,GAAGzC,KAAMI,CAAAA,GAAG,CAAC,CAAE,CAAA;AACtC;AACF,iBAAA;AACA,gBAAA;oBACElB,IAAM,EAAA,UAAA;oBACNU,WAAa,EAAA,iBAAA;oBACbC,IAAM,EAAA,QAAA;oBACNC,OAAS,EAAA,IAAA;oBACTU,OAAS,EAAA;wBACPkC,WAAa,EAAA;AAACC,4BAAAA;AAAiB;AACjC,qBAAA;AACA5C,oBAAAA,GAAAA,CAAAA,CAA0BC,KAAK,EAAA;AAC7BA,wBAAAA,KAAAA,CAAM4C,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,WAAW,EAAA;AACpC,qBAAA;AACA1C,oBAAAA,GAAAA,CAAAA,CAA0BH,KAAK,EAAA;AAC7B,wBAAA,IAAI,CAACA,KAAAA,CAAM4C,MAAM,CAAC,EAAE,EAAE;4BACpB,IAAI,CAACE,QAAQ,GAAG,IAAA;AAClB,yBAAA,MAAO,IAAI9C,KAAM4C,CAAAA,MAAM,CAAC,CAAA,CAAE,YAAYD,gBAAkB,EAAA;AACtD,4BAAA,IAAI,CAACG,QAAQ,GAAG9C,KAAM4C,CAAAA,MAAM,CAAC,CAAE,CAAA;yBAC1B,MAAA;AACLG,4BAAAA,OAAAA,CAAQC,KAAK,CAAC,uBAAA,CAAA;AAChB;AACF;AACF;AACD,aAAA,CAAA;AACH;AACF,KAAA;AACF;;;;"}
|
|
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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"}
|
|
@@ -8,18 +8,20 @@ import '../../../material/lambert.js';
|
|
|
8
8
|
import '../../../material/blinn.js';
|
|
9
9
|
import '../../../material/unlit.js';
|
|
10
10
|
import '../../../material/particle.js';
|
|
11
|
+
import '../../../material/subsurfaceprofile.js';
|
|
11
12
|
import '../../../material/meshmaterial.js';
|
|
12
13
|
import '../../../material/grassmaterial.js';
|
|
13
14
|
import '../../../material/terrain-cm.js';
|
|
14
15
|
import '../../../material/pbrmr.js';
|
|
15
16
|
import '../../../material/pbrsg.js';
|
|
17
|
+
import '../../../material/mtoon.js';
|
|
16
18
|
import '../../../material/pbrblueprint.js';
|
|
17
19
|
import '../../../material/sprite.js';
|
|
18
20
|
import '../../../material/sprite_std.js';
|
|
19
|
-
import '../../../material/msdf_text.js';
|
|
20
21
|
import { defineProps } from '../types.js';
|
|
21
22
|
import '../../blueprint/material/texture.js';
|
|
22
23
|
import '../../../render/rendergraph/forward_plus_builder.js';
|
|
24
|
+
import '../../../render/lightpass.js';
|
|
23
25
|
import '../../../render/sky.js';
|
|
24
26
|
import '../../../render/clipmap.js';
|
|
25
27
|
import '../../../shaders/atmosphere.js';
|