@zephyr3d/scene 0.9.26 → 0.9.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/animation/animationset.js +92 -30
  2. package/dist/animation/animationset.js.map +1 -1
  3. package/dist/animation/joint_dynamics/convex_collider.js +320 -0
  4. package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
  5. package/dist/animation/skeleton.js +21 -1
  6. package/dist/animation/skeleton.js.map +1 -1
  7. package/dist/asset/model.js +6 -2
  8. package/dist/asset/model.js.map +1 -1
  9. package/dist/camera/camera.js +75 -23
  10. package/dist/camera/camera.js.map +1 -1
  11. package/dist/index.d.ts +4764 -3600
  12. package/dist/index.js +2 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/material/hairstrand.js +235 -235
  15. package/dist/material/hairstrand.js.map +1 -1
  16. package/dist/material/material.js +296 -296
  17. package/dist/material/material.js.map +1 -1
  18. package/dist/material/mixins/lit.js +33 -1
  19. package/dist/material/mixins/lit.js.map +1 -1
  20. package/dist/material/shader/helper.js +404 -3
  21. package/dist/material/shader/helper.js.map +1 -1
  22. package/dist/material/water.js +2057 -72
  23. package/dist/material/water.js.map +1 -1
  24. package/dist/posteffect/motionblur.js +663 -58
  25. package/dist/posteffect/motionblur.js.map +1 -1
  26. package/dist/posteffect/posteffect.js +12 -1
  27. package/dist/posteffect/posteffect.js.map +1 -1
  28. package/dist/posteffect/sao.js +46 -44
  29. package/dist/posteffect/sao.js.map +1 -1
  30. package/dist/posteffect/sss.js +30 -2
  31. package/dist/posteffect/sss.js.map +1 -1
  32. package/dist/render/abuffer_oit.js +37 -37
  33. package/dist/render/abuffer_oit.js.map +1 -1
  34. package/dist/render/clipmap.js +156 -5
  35. package/dist/render/clipmap.js.map +1 -1
  36. package/dist/render/cull_visitor.js +1 -0
  37. package/dist/render/cull_visitor.js.map +1 -1
  38. package/dist/render/dualdepthpeeling_oit.js +49 -49
  39. package/dist/render/dualdepthpeeling_oit.js.map +1 -1
  40. package/dist/render/fbm_wavegenerator.js +3 -3
  41. package/dist/render/fbm_wavegenerator.js.map +1 -1
  42. package/dist/render/fft_wavegenerator.js +57 -15
  43. package/dist/render/fft_wavegenerator.js.map +1 -1
  44. package/dist/render/gerstner_wavegenerator.js +127 -20
  45. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  46. package/dist/render/hzb.js +80 -22
  47. package/dist/render/hzb.js.map +1 -1
  48. package/dist/render/lightpass.js +6 -3
  49. package/dist/render/lightpass.js.map +1 -1
  50. package/dist/render/oit.js +11 -11
  51. package/dist/render/oit.js.map +1 -1
  52. package/dist/render/render_queue.js +36 -0
  53. package/dist/render/render_queue.js.map +1 -1
  54. package/dist/render/renderer.js +4 -0
  55. package/dist/render/renderer.js.map +1 -1
  56. package/dist/render/rendergraph/blackboard.js +1 -0
  57. package/dist/render/rendergraph/blackboard.js.map +1 -1
  58. package/dist/render/rendergraph/forward_plus_builder.js +318 -9
  59. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  60. package/dist/render/rendergraph/frame_resource_requirements.js +1 -0
  61. package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -1
  62. package/dist/render/rendergraph/history_resources.js +8 -1
  63. package/dist/render/rendergraph/history_resources.js.map +1 -1
  64. package/dist/render/underwater.js +624 -0
  65. package/dist/render/underwater.js.map +1 -0
  66. package/dist/render/water_caustics.js +1380 -0
  67. package/dist/render/water_caustics.js.map +1 -0
  68. package/dist/render/weightedblended_oit.js +33 -33
  69. package/dist/render/weightedblended_oit.js.map +1 -1
  70. package/dist/scene/water.js +540 -4
  71. package/dist/scene/water.js.map +1 -1
  72. package/dist/shaders/water.js +22 -19
  73. package/dist/shaders/water.js.map +1 -1
  74. package/dist/shaders/water_medium.js +56 -0
  75. package/dist/shaders/water_medium.js.map +1 -0
  76. package/dist/shadow/shadow_region.js +49 -49
  77. package/dist/shadow/shadow_region.js.map +1 -1
  78. package/dist/utility/serialization/manager.js +3 -1
  79. package/dist/utility/serialization/manager.js.map +1 -1
  80. package/dist/utility/serialization/scene/animation.js +31 -2
  81. package/dist/utility/serialization/scene/animation.js.map +1 -1
  82. package/dist/utility/serialization/scene/camera.js +53 -25
  83. package/dist/utility/serialization/scene/camera.js.map +1 -1
  84. package/dist/utility/serialization/scene/light.js.map +1 -1
  85. package/dist/utility/serialization/scene/water.js +1101 -21
  86. package/dist/utility/serialization/scene/water.js.map +1 -1
  87. package/dist/utility/shprojector.js +87 -87
  88. package/dist/utility/shprojector.js.map +1 -1
  89. package/package.json +1 -1
  90. package/dist/render/rendergraph/frame_graph_context.js +0 -41
  91. package/dist/render/rendergraph/frame_graph_context.js.map +0 -1
  92. package/dist/shaders/ssgi.js +0 -63
  93. package/dist/shaders/ssgi.js.map +0 -1
  94. package/dist/shaders/ssgi_reprojection.js +0 -118
  95. package/dist/shaders/ssgi_reprojection.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"animation.js","sources":["../../../../src/utility/serialization/scene/animation.ts"],"sourcesContent":["import type { InterpolationMode, InterpolationTarget } from '@zephyr3d/base';\r\nimport { AABB, DRef, InterpolatorScalar, Quaternion } from '@zephyr3d/base';\r\nimport { base64ToUint8Array, Matrix4x4, uint8ArrayToBase64 } from '@zephyr3d/base';\r\nimport { Interpolator, Vector3 } from '@zephyr3d/base';\r\nimport { AnimationTrack, Skeleton, SkeletonRig, SkinBinding } from '../../../animation';\r\nimport type { SkeletonBindPose } from '../../../animation';\r\nimport {\r\n AnimationClip,\r\n FixedGeometryCacheTrack,\r\n JointDynamicsModifier,\r\n JointDynamicsSystem,\r\n MultiChainSpringSystem,\r\n SpringChain,\r\n SpringModifier,\r\n SpringSystem,\r\n createCapsuleCollider,\r\n createPlaneCollider,\r\n createSphereCollider,\r\n createSpringConstraint,\r\n createSpringParticle,\r\n createTransformAccess,\r\n PCAGeometryCacheTrack,\r\n MorphTargetTrack,\r\n MorphTargetGroupTrack,\r\n NodeEulerRotationTrack,\r\n NodeRotationTrack,\r\n NodeScaleTrack,\r\n NodeTranslationTrack,\r\n PropertyTrack\r\n} from '../../../animation';\r\nimport type { ControllerConfig, ControllerConfigUpdate } from '../../../animation/joint_dynamics/controller';\r\nimport type { ColliderR, GrabberR, JointDynamicSystemConfig } from '../../../animation/joint_dynamics';\r\nimport type {\r\n CapsuleCollider,\r\n InterChainConstraint,\r\n PlaneCollider,\r\n SphereCollider,\r\n SpringCollider,\r\n SpringSystemOptions\r\n} from '../../../animation/spring';\r\nimport type { ResourceManager } from '../manager';\r\nimport { defineProps, type PropertyValue, type SerializableClass } from '../types';\r\nimport { SceneNode } from '../../../scene';\r\nimport { BoundingBox } from '../../bounding_volume';\r\n\r\ntype SerializedScalarCurve = {\r\n mode: InterpolationMode;\r\n inputs: number[];\r\n outputs: number[];\r\n};\r\n\r\ntype SerializedControllerConfig = Partial<Omit<ControllerConfig, 'gravity' | 'windForce' | 'curves'>> & {\r\n gravity?: number[];\r\n windForce?: number[];\r\n curves?: Record<string, SerializedScalarCurve>;\r\n};\r\n\r\ntype SerializedJointDynamicsCollider = {\r\n collider: ColliderR;\r\n transform?: string;\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsFlatPlane = {\r\n up: number[];\r\n position: number[];\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsGrabber = {\r\n grabber: GrabberR;\r\n transform?: string;\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsModifier = {\r\n skeleton: string;\r\n systemRoot: string;\r\n chains: {\r\n start: string;\r\n end: string;\r\n startAnchor?: string;\r\n endAnchor?: string;\r\n startAnchorOffset?: number[];\r\n endAnchorOffset?: number[];\r\n }[];\r\n controllerConfig?: SerializedControllerConfig;\r\n colliders?: SerializedJointDynamicsCollider[];\r\n flatPlanes?: SerializedJointDynamicsFlatPlane[];\r\n grabbers?: SerializedJointDynamicsGrabber[];\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedSpringParticle = {\r\n node?: string;\r\n anchorNode?: string;\r\n anchorOffset?: number[];\r\n originalPosition: number[];\r\n originalRotation?: number[];\r\n mass: number;\r\n damping: number;\r\n fixed: boolean;\r\n};\r\n\r\ntype SerializedSpringChain = {\r\n particles: SerializedSpringParticle[];\r\n constraints: {\r\n particleA: number;\r\n particleB: number;\r\n restLength: number;\r\n stiffness: number;\r\n compliance: number;\r\n }[];\r\n};\r\n\r\ntype SerializedSpringCollider =\r\n | {\r\n type: 'sphere';\r\n node?: string;\r\n enabled: boolean;\r\n center: number[];\r\n radius: number;\r\n localRadius?: number;\r\n localRadiusScaleRef?: number;\r\n localOffset?: number[];\r\n }\r\n | {\r\n type: 'capsule';\r\n node?: string;\r\n enabled: boolean;\r\n start: number[];\r\n end: number[];\r\n radius: number;\r\n localRadius?: number;\r\n localRadiusScaleRef?: number;\r\n localStartOffset?: number[];\r\n localEndOffset?: number[];\r\n }\r\n | {\r\n type: 'plane';\r\n node?: string;\r\n enabled: boolean;\r\n point: number[];\r\n normal: number[];\r\n localPointOffset?: number[];\r\n localNormal?: number[];\r\n };\r\n\r\ntype SerializedSpringSystemOptions = Omit<SpringSystemOptions, 'gravity' | 'wind'> & {\r\n gravity: number[];\r\n wind: number[];\r\n};\r\n\r\ntype SerializedSpringModifier = {\r\n skeleton: string;\r\n sourceId?: string;\r\n systemType: 'single' | 'multi';\r\n options: SerializedSpringSystemOptions;\r\n chains: SerializedSpringChain[];\r\n interChainConstraints?: Omit<InterChainConstraint, 'lambda'>[];\r\n colliders?: SerializedSpringCollider[];\r\n enabled?: boolean;\r\n weight?: number;\r\n};\r\n\r\nconst jointDynamicsModifierSkeletons = new WeakMap<JointDynamicsModifier, SkeletonRig>();\r\nconst springModifierSkeletons = new WeakMap<SpringModifier, SkeletonRig>();\r\n\r\nfunction encodeSkeletonBindPose(bindPose: SkeletonBindPose): string {\r\n return uint8ArrayToBase64(\r\n new Uint8Array(new Float32Array([...bindPose.position, ...bindPose.rotation, ...bindPose.scale]).buffer)\r\n );\r\n}\r\n\r\nfunction decodeSkeletonBindPose(encoded: string): SkeletonBindPose {\r\n const data = new Float32Array(base64ToUint8Array(encoded).buffer);\r\n return {\r\n position: new Vector3(data[0], data[1], data[2]),\r\n rotation: new Quaternion(data[3], data[4], data[5], data[6]),\r\n scale: new Vector3(data[7], data[8], data[9])\r\n };\r\n}\r\n\r\nfunction vectorToArray(value: Vector3): number[] {\r\n return [value.x, value.y, value.z];\r\n}\r\n\r\nfunction vectorFromArray(value: number[] | undefined, defaultValue = Vector3.zero()): Vector3 {\r\n return Array.isArray(value)\r\n ? new Vector3(value[0] ?? 0, value[1] ?? 0, value[2] ?? 0)\r\n : defaultValue.clone();\r\n}\r\n\r\nfunction quaternionToArray(value: Quaternion): number[] {\r\n return [value.x, value.y, value.z, value.w];\r\n}\r\n\r\nfunction quaternionFromArray(value: number[] | undefined): Quaternion | undefined {\r\n return Array.isArray(value)\r\n ? new Quaternion(value[0] ?? 0, value[1] ?? 0, value[2] ?? 0, value[3] ?? 1)\r\n : undefined;\r\n}\r\n\r\nfunction serializeSpringChain(chain: SpringChain): SerializedSpringChain {\r\n return {\r\n particles: chain.particles.map((particle) => ({\r\n ...(particle.node ? { node: particle.node.persistentId } : {}),\r\n ...(particle.anchorNode ? { anchorNode: particle.anchorNode.persistentId } : {}),\r\n ...(particle.anchorOffset ? { anchorOffset: vectorToArray(particle.anchorOffset) } : {}),\r\n originalPosition: vectorToArray(particle.originalPosition),\r\n ...(particle.originalRotation\r\n ? { originalRotation: quaternionToArray(particle.originalRotation) }\r\n : {}),\r\n mass: particle.mass,\r\n damping: particle.damping,\r\n fixed: particle.fixed\r\n })),\r\n constraints: chain.constraints.map((constraint) => ({\r\n particleA: constraint.particleA,\r\n particleB: constraint.particleB,\r\n restLength: constraint.restLength,\r\n stiffness: constraint.stiffness,\r\n compliance: constraint.compliance\r\n }))\r\n };\r\n}\r\n\r\nfunction deserializeSpringChain(ctx: SceneNode, data: SerializedSpringChain): SpringChain | null {\r\n const chain = new SpringChain();\r\n for (const item of data.particles ?? []) {\r\n const node = findSerializedNode(ctx, item.node);\r\n const anchorNode = findSerializedNode(ctx, item.anchorNode);\r\n if ((item.node && !node) || (item.anchorNode && !anchorNode)) {\r\n return null;\r\n }\r\n const position = node\r\n ? new Vector3(node.worldMatrix.m03, node.worldMatrix.m13, node.worldMatrix.m23)\r\n : vectorFromArray(item.originalPosition);\r\n let originalRotation = quaternionFromArray(item.originalRotation);\r\n if (node) {\r\n originalRotation = new Quaternion();\r\n node.worldMatrix.decompose(null, originalRotation, null);\r\n }\r\n chain.addParticle(\r\n createSpringParticle(position, {\r\n mass: item.mass,\r\n damping: item.damping,\r\n fixed: item.fixed,\r\n node: node ?? undefined,\r\n anchorNode: anchorNode ?? undefined,\r\n anchorOffset: item.anchorOffset ? vectorFromArray(item.anchorOffset) : undefined,\r\n originalRotation\r\n })\r\n );\r\n }\r\n for (const item of data.constraints ?? []) {\r\n if (\r\n item.particleA < 0 ||\r\n item.particleB < 0 ||\r\n item.particleA >= chain.particles.length ||\r\n item.particleB >= chain.particles.length\r\n ) {\r\n return null;\r\n }\r\n chain.addConstraint(\r\n createSpringConstraint(item.particleA, item.particleB, item.restLength, item.stiffness, item.compliance)\r\n );\r\n }\r\n return chain.particles.length > 0 ? chain : null;\r\n}\r\n\r\nfunction serializeSpringCollider(collider: SpringCollider): SerializedSpringCollider {\r\n switch (collider.type) {\r\n case 'sphere': {\r\n const sphere = collider as SphereCollider;\r\n return {\r\n type: 'sphere',\r\n ...(sphere.node ? { node: sphere.node.persistentId } : {}),\r\n enabled: sphere.enabled,\r\n center: vectorToArray(sphere.center),\r\n radius: sphere.radius,\r\n ...(sphere.localRadius !== undefined ? { localRadius: sphere.localRadius } : {}),\r\n ...(sphere.localRadiusScaleRef !== undefined\r\n ? { localRadiusScaleRef: sphere.localRadiusScaleRef }\r\n : {}),\r\n ...(sphere.localOffset ? { localOffset: vectorToArray(sphere.localOffset) } : {})\r\n };\r\n }\r\n case 'capsule': {\r\n const capsule = collider as CapsuleCollider;\r\n return {\r\n type: 'capsule',\r\n ...(capsule.node ? { node: capsule.node.persistentId } : {}),\r\n enabled: capsule.enabled,\r\n start: vectorToArray(capsule.start),\r\n end: vectorToArray(capsule.end),\r\n radius: capsule.radius,\r\n ...(capsule.localRadius !== undefined ? { localRadius: capsule.localRadius } : {}),\r\n ...(capsule.localRadiusScaleRef !== undefined\r\n ? { localRadiusScaleRef: capsule.localRadiusScaleRef }\r\n : {}),\r\n ...(capsule.localStartOffset ? { localStartOffset: vectorToArray(capsule.localStartOffset) } : {}),\r\n ...(capsule.localEndOffset ? { localEndOffset: vectorToArray(capsule.localEndOffset) } : {})\r\n };\r\n }\r\n case 'plane': {\r\n const plane = collider as PlaneCollider;\r\n return {\r\n type: 'plane',\r\n ...(plane.node ? { node: plane.node.persistentId } : {}),\r\n enabled: plane.enabled,\r\n point: vectorToArray(plane.point),\r\n normal: vectorToArray(plane.normal),\r\n ...(plane.localPointOffset ? { localPointOffset: vectorToArray(plane.localPointOffset) } : {}),\r\n ...(plane.localNormal ? { localNormal: vectorToArray(plane.localNormal) } : {})\r\n };\r\n }\r\n }\r\n}\r\n\r\nfunction restoreSpringColliderRadiusScale(\r\n collider: SphereCollider | CapsuleCollider,\r\n data: Extract<SerializedSpringCollider, { type: 'sphere' | 'capsule' }>\r\n): void {\r\n const createdScaleRef = collider.localRadiusScaleRef;\r\n if (data.localRadiusScaleRef !== undefined) {\r\n collider.localRadiusScaleRef = data.localRadiusScaleRef;\r\n } else if (\r\n data.localRadius !== undefined &&\r\n createdScaleRef !== undefined &&\r\n Number.isFinite(data.localRadius) &&\r\n Number.isFinite(data.radius) &&\r\n Math.abs(data.radius) > 1e-6\r\n ) {\r\n // Older serialized modifiers omitted the authored scale reference. Recover it\r\n // from the stored world radius and the node scale captured by the constructor.\r\n const inferredScaleRef = (data.localRadius * createdScaleRef) / data.radius;\r\n if (Number.isFinite(inferredScaleRef) && Math.abs(inferredScaleRef) > 1e-6) {\r\n collider.localRadiusScaleRef = Math.abs(inferredScaleRef);\r\n }\r\n }\r\n collider.radius = data.radius;\r\n}\r\n\r\nfunction deserializeSpringCollider(ctx: SceneNode, data: SerializedSpringCollider): SpringCollider | null {\r\n const node = findSerializedNode(ctx, data.node);\r\n if (data.node && !node) {\r\n return null;\r\n }\r\n let collider: SpringCollider;\r\n switch (data.type) {\r\n case 'sphere': {\r\n const sphere = createSphereCollider(\r\n node && data.localOffset ? vectorFromArray(data.localOffset) : vectorFromArray(data.center),\r\n node ? (data.localRadius ?? data.radius) : data.radius,\r\n node ?? undefined\r\n );\r\n restoreSpringColliderRadiusScale(sphere, data);\r\n collider = sphere;\r\n break;\r\n }\r\n case 'capsule': {\r\n const capsule = createCapsuleCollider(\r\n node && data.localStartOffset ? vectorFromArray(data.localStartOffset) : vectorFromArray(data.start),\r\n node && data.localEndOffset ? vectorFromArray(data.localEndOffset) : vectorFromArray(data.end),\r\n node ? (data.localRadius ?? data.radius) : data.radius,\r\n node ?? undefined\r\n );\r\n restoreSpringColliderRadiusScale(capsule, data);\r\n collider = capsule;\r\n break;\r\n }\r\n case 'plane':\r\n collider = createPlaneCollider(\r\n node && data.localPointOffset ? vectorFromArray(data.localPointOffset) : vectorFromArray(data.point),\r\n node && data.localNormal ? vectorFromArray(data.localNormal) : vectorFromArray(data.normal),\r\n node ?? undefined\r\n );\r\n break;\r\n }\r\n collider.enabled = data.enabled;\r\n return collider;\r\n}\r\n\r\nfunction getSpringSystemOptions(\r\n system: SpringSystem | MultiChainSpringSystem\r\n): SerializedSpringSystemOptions {\r\n return {\r\n iterations: system.iterations,\r\n gravity: vectorToArray(system.gravity),\r\n wind: vectorToArray(system.wind),\r\n enableInertialForces: system.enableInertialForces,\r\n centrifugalScale: system.centrifugalScale,\r\n coriolisScale: system.coriolisScale,\r\n solver: system.solver,\r\n poseFollow: system.poseFollow,\r\n poseFollowRoot: system.poseFollowRoot,\r\n poseFollowTip: system.poseFollowTip,\r\n poseFollowExponent: system.poseFollowExponent,\r\n maxPoseOffset: system.maxPoseOffset,\r\n maxPoseOffsetRoot: system.maxPoseOffsetRoot,\r\n maxPoseOffsetTip: system.maxPoseOffsetTip\r\n };\r\n}\r\n\r\nfunction deserializeSpringSystemOptions(options: SerializedSpringSystemOptions): SpringSystemOptions {\r\n return {\r\n ...options,\r\n gravity: vectorFromArray(options.gravity, new Vector3(0, -9.8, 0)),\r\n wind: vectorFromArray(options.wind)\r\n };\r\n}\r\n\r\nfunction serializeScalarCurve(value: InterpolatorScalar): SerializedScalarCurve {\r\n return {\r\n mode: value.mode,\r\n inputs: [...value.inputs],\r\n outputs: [...value.outputs]\r\n };\r\n}\r\n\r\nfunction deserializeScalarCurve(value: SerializedScalarCurve): InterpolatorScalar {\r\n return new InterpolatorScalar(\r\n value?.mode ?? 'step',\r\n new Float32Array(value?.inputs ?? [0]),\r\n new Float32Array(value?.outputs ?? [0])\r\n );\r\n}\r\n\r\nfunction serializeControllerConfig(value: ControllerConfig): SerializedControllerConfig {\r\n const curves: Record<string, SerializedScalarCurve> = {};\r\n for (const [key, curve] of Object.entries(value.curves)) {\r\n curves[key] = serializeScalarCurve(curve);\r\n }\r\n return {\r\n gravity: vectorToArray(value.gravity),\r\n windForce: vectorToArray(value.windForce),\r\n relaxation: value.relaxation,\r\n subSteps: value.subSteps,\r\n rootSlideLimit: value.rootSlideLimit,\r\n rootRotateLimit: value.rootRotateLimit,\r\n constraintShrinkLimit: value.constraintShrinkLimit,\r\n blendRatio: value.blendRatio,\r\n stabilizationFrameRate: value.stabilizationFrameRate,\r\n isFakeWave: value.isFakeWave,\r\n fakeWaveSpeed: value.fakeWaveSpeed,\r\n fakeWavePower: value.fakeWavePower,\r\n enableSurfaceCollision: value.enableSurfaceCollision,\r\n enableBroadPhase: value.enableBroadPhase,\r\n preserveTwist: value.preserveTwist,\r\n angleLimitConfig: { ...value.angleLimitConfig },\r\n curves,\r\n constraintOptions: { ...value.constraintOptions }\r\n };\r\n}\r\n\r\nfunction deserializeControllerConfig(\r\n value: SerializedControllerConfig | undefined\r\n): JointDynamicSystemConfig['controllerConfig'] {\r\n if (!value) {\r\n return undefined;\r\n }\r\n const curves = Object.fromEntries(\r\n Object.entries(value.curves ?? {}).map(([key, curve]) => [key, deserializeScalarCurve(curve)])\r\n ) as Partial<ControllerConfig['curves']>;\r\n const config: JointDynamicSystemConfig['controllerConfig'] = {};\r\n if (value.gravity) {\r\n config.gravity = vectorFromArray(value.gravity, new Vector3(0, -9.8, 0));\r\n }\r\n if (value.windForce) {\r\n config.windForce = vectorFromArray(value.windForce);\r\n }\r\n for (const key of [\r\n 'relaxation',\r\n 'subSteps',\r\n 'rootSlideLimit',\r\n 'rootRotateLimit',\r\n 'constraintShrinkLimit',\r\n 'blendRatio',\r\n 'stabilizationFrameRate',\r\n 'isFakeWave',\r\n 'fakeWaveSpeed',\r\n 'fakeWavePower',\r\n 'enableSurfaceCollision',\r\n 'enableBroadPhase',\r\n 'preserveTwist'\r\n ] as const) {\r\n if (value[key] !== undefined) {\r\n config[key] = value[key] as never;\r\n }\r\n }\r\n if (value.angleLimitConfig) {\r\n config.angleLimitConfig = { ...value.angleLimitConfig };\r\n }\r\n if (Object.keys(curves).length > 0) {\r\n config.curves = curves;\r\n }\r\n if (value.constraintOptions) {\r\n config.constraintOptions = { ...value.constraintOptions };\r\n }\r\n return config;\r\n}\r\n\r\nfunction findSerializedNode(root: SceneNode, id: string | undefined): SceneNode | null {\r\n if (!id) {\r\n return null;\r\n }\r\n const prefabNode = root.getPrefabNode() ?? root;\r\n return prefabNode.findNodeById(id) ?? root.scene?.findNodeById(id) ?? null;\r\n}\r\n\r\nexport function setJointDynamicsModifierSkeleton(\r\n modifier: JointDynamicsModifier,\r\n skeleton: SkeletonRig\r\n): void {\r\n jointDynamicsModifierSkeletons.set(modifier, skeleton);\r\n}\r\n\r\nexport function getJointDynamicsModifierSkeleton(modifier: JointDynamicsModifier): SkeletonRig | null {\r\n return jointDynamicsModifierSkeletons.get(modifier) ?? null;\r\n}\r\n\r\n/** @internal */\r\nexport function setSpringModifierSkeleton(modifier: SpringModifier, skeleton: SkeletonRig): void {\r\n springModifierSkeletons.set(modifier, skeleton);\r\n}\r\n\r\n/** @internal */\r\nexport function getSpringModifierSkeleton(modifier: SpringModifier): SkeletonRig | null {\r\n return springModifierSkeletons.get(modifier) ?? null;\r\n}\r\n\r\ntype JointDynamicsNumberConfigKey = {\r\n [K in keyof ControllerConfig]: ControllerConfig[K] extends number ? K : never;\r\n}[keyof ControllerConfig];\r\n\r\ntype JointDynamicsBooleanConfigKey = {\r\n [K in keyof ControllerConfig]: ControllerConfig[K] extends boolean ? K : never;\r\n}[keyof ControllerConfig];\r\n\r\ntype JointDynamicsCurveKey = keyof ControllerConfig['curves'];\r\ntype JointDynamicsConstraintOptionKey = keyof ControllerConfig['constraintOptions'];\r\n\r\nconst jointDynamicsPropOptions = { group: 'Joint Dynamics' };\r\n\r\nfunction isJointDynamicsEditorPropPersistent() {\r\n return false;\r\n}\r\n\r\nfunction updateJointDynamicsConfig(modifier: JointDynamicsModifier, config: ControllerConfigUpdate): void {\r\n modifier.jointDynamicsSystem.controller.updateConfig(config);\r\n}\r\n\r\nfunction createJointDynamicsNumberProp(\r\n name: string,\r\n key: JointDynamicsNumberConfigKey,\r\n label: string,\r\n description: string,\r\n type: 'float' | 'int',\r\n minValue?: number\r\n) {\r\n return {\r\n name,\r\n description,\r\n type,\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label,\r\n ...(minValue !== undefined ? { minValue } : {})\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig()[key] as number;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, { [key]: value.num[0] } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsBooleanProp(\r\n name: string,\r\n key: JointDynamicsBooleanConfigKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig()[key] as boolean;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, { [key]: value.bool[0] } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsVectorProp(\r\n name: string,\r\n key: 'gravity' | 'windForce',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'vec3',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n const v = this.jointDynamicsSystem.controller.getConfig()[key];\r\n value.num[0] = v.x;\r\n value.num[1] = v.y;\r\n value.num[2] = v.z;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, {\r\n [key]: new Vector3(value.num[0], value.num[1], value.num[2])\r\n } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsAngleLimitNumberProp(\r\n name: string,\r\n key: 'angleLimit',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig().angleLimitConfig[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, {\r\n angleLimitConfig: { [key]: value.num[0] }\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsAngleLimitBooleanProp(\r\n name: string,\r\n key: 'limitFromRoot',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig().angleLimitConfig[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, {\r\n angleLimitConfig: { [key]: value.bool[0] }\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsConstraintOptionProp(\r\n name: string,\r\n key: JointDynamicsConstraintOptionKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig().constraintOptions[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, {\r\n constraintOptions: { [key]: value.bool[0] } as Partial<ControllerConfig['constraintOptions']>\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsCurveProp(\r\n name: string,\r\n key: JointDynamicsCurveKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig().curves[key].evaluate(0);\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n const val = value.num[0];\r\n updateJointDynamicsConfig(this, {\r\n curves: {\r\n [key]: InterpolatorScalar.constant(val)\r\n }\r\n });\r\n }\r\n };\r\n /*\r\n return {\r\n name,\r\n description,\r\n type: 'object',\r\n readonly: true,\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label,\r\n objectTypes: [Interpolator],\r\n edit: 'curve1f' as const\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'object'>>) {\r\n value.object[0] = this.jointDynamicsSystem.controller.getConfig().curves[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'object'>>) {\r\n const curve = value.object[0];\r\n if (curve instanceof InterpolatorScalar) {\r\n updateJointDynamicsConfig(this, { curves: { [key]: curve } as Partial<ControllerConfig['curves']> });\r\n } else if (curve instanceof Interpolator && curve.target === 'number') {\r\n updateJointDynamicsConfig(this, {\r\n curves: {\r\n [key]: new InterpolatorScalar(\r\n curve.mode,\r\n new Float32Array(curve.inputs),\r\n new Float32Array(curve.outputs)\r\n )\r\n } as Partial<ControllerConfig['curves']>\r\n });\r\n }\r\n }\r\n };\r\n */\r\n}\r\n\r\n/** @internal */\r\nexport function getSpringModifierClass(): SerializableClass {\r\n return {\r\n ctor: SpringModifier,\r\n name: 'SpringModifier',\r\n createFunc(ctx: SceneNode, init: SerializedSpringModifier) {\r\n const skeleton =\r\n ctx.findSkeletonRigById(init.skeleton) ?? ctx.findSkeletonById(init.skeleton)?.rig ?? null;\r\n if (!skeleton || !Array.isArray(init.chains) || init.chains.length === 0) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const chains = init.chains.map((chain) => deserializeSpringChain(ctx, chain));\r\n if (chains.some((chain) => !chain)) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const options = deserializeSpringSystemOptions(init.options);\r\n let system: SpringSystem | MultiChainSpringSystem;\r\n if (init.systemType === 'single') {\r\n system = new SpringSystem(chains[0]!, options);\r\n } else {\r\n const multiChainSystem = new MultiChainSpringSystem(options);\r\n for (const chain of chains) {\r\n multiChainSystem.addChain(chain!);\r\n }\r\n for (const constraint of init.interChainConstraints ?? []) {\r\n if (\r\n constraint.chainAIndex < 0 ||\r\n constraint.chainBIndex < 0 ||\r\n constraint.chainAIndex >= chains.length ||\r\n constraint.chainBIndex >= chains.length\r\n ) {\r\n continue;\r\n }\r\n multiChainSystem.addInterChainConstraint({ ...constraint, lambda: 0 });\r\n }\r\n system = multiChainSystem;\r\n }\r\n for (const colliderData of init.colliders ?? []) {\r\n const collider = deserializeSpringCollider(ctx, colliderData);\r\n if (collider) {\r\n system.addCollider(collider);\r\n }\r\n }\r\n const modifier = new SpringModifier(system as unknown as SpringSystem, init.weight ?? 1);\r\n modifier.sourceId = init.sourceId ?? '';\r\n modifier.enabled = init.enabled ?? true;\r\n setSpringModifierSkeleton(modifier, skeleton);\r\n return { obj: modifier, loadProps: false };\r\n },\r\n getInitParams(obj: SpringModifier) {\r\n const skeleton = getSpringModifierSkeleton(obj);\r\n const system = obj.springSystem as unknown as SpringSystem | MultiChainSpringSystem;\r\n const isMultiChain = system instanceof MultiChainSpringSystem;\r\n if (!isMultiChain && !(system instanceof SpringSystem)) {\r\n throw new Error('Serialize SpringModifier failed: Unsupported spring system type');\r\n }\r\n const chains = isMultiChain ? system.chains : [system.chain];\r\n const init: SerializedSpringModifier = {\r\n skeleton: skeleton?.persistentId ?? '',\r\n sourceId: obj.sourceId,\r\n systemType: isMultiChain ? 'multi' : 'single',\r\n options: getSpringSystemOptions(system),\r\n chains: chains.map(serializeSpringChain),\r\n ...(isMultiChain\r\n ? {\r\n interChainConstraints: system.interChainConstraints.map(\r\n ({ lambda: _lambda, ...constraint }) => constraint\r\n )\r\n }\r\n : {}),\r\n colliders: system.colliders.map(serializeSpringCollider),\r\n enabled: obj.enabled,\r\n weight: obj.weight\r\n };\r\n return init;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Commands',\r\n description: 'Reset spring modifier state',\r\n type: 'command',\r\n command(this: SpringModifier) {\r\n this.reset();\r\n return false;\r\n },\r\n get(value) {\r\n value.str[0] = 'Reset';\r\n }\r\n },\r\n {\r\n name: 'Enabled',\r\n description: 'Whether this spring modifier is active',\r\n type: 'bool',\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: SpringModifier, value) {\r\n value.bool[0] = this.enabled;\r\n },\r\n set(this: SpringModifier, value) {\r\n this.enabled = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Physics blend weight. 0 uses animation only, 1 uses full spring physics',\r\n type: 'float',\r\n options: {\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: SpringModifier, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: SpringModifier, value) {\r\n this.weight = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getJointDynamicsModifierClass(): SerializableClass {\r\n return {\r\n ctor: JointDynamicsModifier,\r\n name: 'JointDynamicsModifier',\r\n createFunc(ctx: SceneNode, init: SerializedJointDynamicsModifier) {\r\n const skeleton =\r\n ctx.findSkeletonRigById(init.skeleton) ?? ctx.findSkeletonById(init.skeleton)?.rig ?? null;\r\n const systemRoot = findSerializedNode(ctx, init.systemRoot);\r\n if (!skeleton || !systemRoot) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const chains = (init.chains ?? [])\r\n .map((chain): JointDynamicSystemConfig['chainConfig']['chains'][number] | null => {\r\n const start = findSerializedNode(ctx, chain.start);\r\n const end = findSerializedNode(ctx, chain.end);\r\n const startAnchor = findSerializedNode(ctx, chain.startAnchor);\r\n const endAnchor = findSerializedNode(ctx, chain.endAnchor);\r\n return start && end\r\n ? {\r\n start,\r\n end,\r\n startAnchor: startAnchor ?? undefined,\r\n endAnchor: endAnchor ?? undefined,\r\n startAnchorOffset: chain.startAnchorOffset\r\n ? vectorFromArray(chain.startAnchorOffset)\r\n : undefined,\r\n endAnchorOffset: chain.endAnchorOffset ? vectorFromArray(chain.endAnchorOffset) : undefined\r\n }\r\n : null;\r\n })\r\n .filter((chain): chain is JointDynamicSystemConfig['chainConfig']['chains'][number] => {\r\n return !!chain && chain.start.isParentOf(chain.end);\r\n });\r\n if (chains.length === 0) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const serializedColliders = init.colliders ?? [];\r\n const colliders: { r: ColliderR; transform: ReturnType<typeof createTransformAccess> }[] =\r\n serializedColliders.map((item) => {\r\n const transform = findSerializedNode(ctx, item.transform);\r\n return {\r\n r: { ...item.collider },\r\n transform: transform\r\n ? createTransformAccess(transform)\r\n : createTransformAccess(new SceneNode(null), false)\r\n };\r\n });\r\n const serializedGrabbers = init.grabbers ?? [];\r\n const grabbers: {\r\n r: GrabberR;\r\n transform: ReturnType<typeof createTransformAccess>;\r\n enabled: boolean;\r\n }[] = serializedGrabbers.map((item) => {\r\n const transform = findSerializedNode(ctx, item.transform);\r\n return {\r\n r: { ...item.grabber },\r\n transform: transform\r\n ? createTransformAccess(transform)\r\n : createTransformAccess(new SceneNode(null), false),\r\n enabled: item.enabled ?? false\r\n };\r\n });\r\n const flatPlanes = (init.flatPlanes ?? []).map((item) => ({\r\n up: vectorFromArray(item.up, Vector3.axisPY()),\r\n position: vectorFromArray(item.position),\r\n enabled: item.enabled ?? true\r\n }));\r\n const controllerConfig = deserializeControllerConfig(init.controllerConfig);\r\n const config: JointDynamicSystemConfig = {\r\n chainConfig: {\r\n systemRoot,\r\n chains\r\n },\r\n controllerConfig\r\n };\r\n const system = new JointDynamicsSystem(\r\n config,\r\n colliders,\r\n grabbers,\r\n flatPlanes.map((item) => ({ up: item.up, position: item.position }))\r\n );\r\n for (let i = 0; i < serializedColliders.length; i++) {\r\n if (serializedColliders[i]?.enabled === false) {\r\n system.controller.setColliderEnabledAt(i, false);\r\n }\r\n }\r\n for (let i = 0; i < flatPlanes.length; i++) {\r\n if (!flatPlanes[i].enabled) {\r\n system.controller.setFlatPlaneEnabledAt(i, false);\r\n }\r\n }\r\n const modifier = new JointDynamicsModifier(system);\r\n modifier.enabled = init.enabled ?? true;\r\n setJointDynamicsModifierSkeleton(modifier, skeleton);\r\n return { obj: modifier, loadProps: false };\r\n },\r\n getInitParams(obj: JointDynamicsModifier) {\r\n const skeleton = getJointDynamicsModifierSkeleton(obj);\r\n const chainConfig = obj.jointDynamicsSystem.chainConfig;\r\n const controllerConfig = obj.jointDynamicsSystem.controller.getConfig();\r\n const init: SerializedJointDynamicsModifier = {\r\n skeleton: skeleton?.persistentId ?? '',\r\n systemRoot: chainConfig.systemRoot.persistentId,\r\n chains: chainConfig.chains.map((chain) => ({\r\n start: chain.start.persistentId,\r\n end: chain.end.persistentId,\r\n startAnchor: chain.startAnchor?.persistentId,\r\n endAnchor: chain.endAnchor?.persistentId,\r\n startAnchorOffset: chain.startAnchorOffset ? vectorToArray(chain.startAnchorOffset) : undefined,\r\n endAnchorOffset: chain.endAnchorOffset ? vectorToArray(chain.endAnchorOffset) : undefined\r\n })),\r\n controllerConfig: serializeControllerConfig(controllerConfig),\r\n colliders: obj.jointDynamicsSystem.getColliderSnapshots().map((item) => ({\r\n collider: { ...item.r },\r\n transform: item.transform instanceof SceneNode ? item.transform.persistentId : undefined,\r\n enabled: item.enabled\r\n })),\r\n flatPlanes: obj.jointDynamicsSystem.getFlatPlaneSnapshots().map((item) => ({\r\n up: vectorToArray(item.up),\r\n position: vectorToArray(item.position),\r\n enabled: item.enabled\r\n })),\r\n grabbers: obj.jointDynamicsSystem.getGrabberSnapshots().map((item) => ({\r\n grabber: { ...item.r },\r\n transform: item.transform instanceof SceneNode ? item.transform.persistentId : undefined,\r\n enabled: item.enabled\r\n })),\r\n enabled: obj.enabled\r\n };\r\n return init;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Commands',\r\n description: 'Reset joint dynamics modifier state',\r\n type: 'command',\r\n command(this: JointDynamicsModifier) {\r\n this.reset();\r\n return false;\r\n },\r\n get(value) {\r\n value.str[0] = 'Reset';\r\n }\r\n },\r\n {\r\n name: 'Enabled',\r\n description: 'Whether this joint dynamics modifier is active',\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label: 'Enabled'\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value) {\r\n value.bool[0] = this.enabled;\r\n },\r\n set(this: JointDynamicsModifier, value) {\r\n this.enabled = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Physics blend weight. 0 uses animation only, 1 uses full joint dynamics',\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label: 'Weight',\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: JointDynamicsModifier, value) {\r\n this.weight = value.num[0];\r\n }\r\n },\r\n createJointDynamicsVectorProp('Gravity', 'gravity', 'Gravity', 'Global gravity vector'),\r\n createJointDynamicsVectorProp('WindForce', 'windForce', 'Wind Force', 'Global wind force vector'),\r\n createJointDynamicsNumberProp(\r\n 'Relaxation',\r\n 'relaxation',\r\n 'Relaxation',\r\n 'Constraint relaxation iterations per substep',\r\n 'int',\r\n 0\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'SubSteps',\r\n 'subSteps',\r\n 'Sub Steps',\r\n 'Simulation substeps per frame',\r\n 'int',\r\n 1\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'RootSlideLimit',\r\n 'rootSlideLimit',\r\n 'Root Slide Limit',\r\n 'Maximum system-local root movement left as relative physics lag after large root motion. -1 means unlimited',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'RootRotateLimit',\r\n 'rootRotateLimit',\r\n 'Root Rotate Limit',\r\n 'Maximum root rotation angle per substep. -1 means unlimited',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'ConstraintShrinkLimit',\r\n 'constraintShrinkLimit',\r\n 'Shrink Limit',\r\n 'Upper limit for horizontal and shear constraint shrink power',\r\n 'float',\r\n 0\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'StabilizationFrameRate',\r\n 'stabilizationFrameRate',\r\n 'Stabilization FPS',\r\n 'Target frame rate used by stabilization logic',\r\n 'float',\r\n 0\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'FakeWave',\r\n 'isFakeWave',\r\n 'Fake Wave',\r\n 'Enable sinusoidal fake wave on leaf bones'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'FakeWaveSpeed',\r\n 'fakeWaveSpeed',\r\n 'Fake Wave Speed',\r\n 'Global fake wave speed',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'FakeWavePower',\r\n 'fakeWavePower',\r\n 'Fake Wave Power',\r\n 'Global fake wave amplitude multiplier',\r\n 'float'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'EnableSurfaceCollision',\r\n 'enableSurfaceCollision',\r\n 'Surface Collision',\r\n 'Enable triangle-based surface collision'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'EnableBroadPhase',\r\n 'enableBroadPhase',\r\n 'Broad Phase',\r\n 'Enable broad-phase pruning before precise collider tests'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'PreserveTwist',\r\n 'preserveTwist',\r\n 'Preserve Twist',\r\n 'Preserve each joint initial local twist after physics simulation'\r\n ),\r\n createJointDynamicsAngleLimitNumberProp(\r\n 'AngleLimit',\r\n 'angleLimit',\r\n 'Angle Limit',\r\n 'Post-simulation parent-child angle limit. -1 disables angle limiting'\r\n ),\r\n createJointDynamicsAngleLimitBooleanProp(\r\n 'AngleLimitFromRoot',\r\n 'limitFromRoot',\r\n 'Limit From Root',\r\n 'Apply angle limiting from the chain root'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'StructuralVertical',\r\n 'structuralVertical',\r\n 'Structural Vertical',\r\n 'Generate parent-child vertical constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'StructuralHorizontal',\r\n 'structuralHorizontal',\r\n 'Structural Horizontal',\r\n 'Generate same-depth horizontal constraints across chains'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'Shear',\r\n 'shear',\r\n 'Shear',\r\n 'Generate diagonal cross-bracing constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'BendingVertical',\r\n 'bendingVertical',\r\n 'Bending Vertical',\r\n 'Generate skip-one vertical bending constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'BendingHorizontal',\r\n 'bendingHorizontal',\r\n 'Bending Horizontal',\r\n 'Generate skip-one horizontal bending constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'Loop',\r\n 'isLoop',\r\n 'Loop',\r\n 'Connect the last root point back to the first root point'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideStructuralVertical',\r\n 'collideStructuralVertical',\r\n 'Collide Structural V',\r\n 'Enable per-constraint collision on structural vertical pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideStructuralHorizontal',\r\n 'collideStructuralHorizontal',\r\n 'Collide Structural H',\r\n 'Enable per-constraint collision on structural horizontal pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideShear',\r\n 'collideShear',\r\n 'Collide Shear',\r\n 'Enable per-constraint collision on shear pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'ConstraintSurfaceCollision',\r\n 'enableSurfaceCollision',\r\n 'Constraint Surface Collision',\r\n 'Enable surface collision in constraint generation'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'MassScale',\r\n 'massScale',\r\n 'Mass Scale',\r\n 'Depth curve that scales point mass'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'GravityScale',\r\n 'gravityScale',\r\n 'Gravity Scale',\r\n 'Depth curve that scales gravity strength'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'WindForceScale',\r\n 'windForceScale',\r\n 'Wind Force Scale',\r\n 'Depth curve that scales wind force'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Resistance',\r\n 'resistance',\r\n 'Resistance',\r\n 'Depth curve for velocity damping'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Hardness',\r\n 'hardness',\r\n 'Hardness',\r\n 'Depth curve for restore-to-animation stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Friction',\r\n 'friction',\r\n 'Friction',\r\n 'Depth curve for collision friction'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'PointRadius',\r\n 'pointRadius',\r\n 'Point Radius',\r\n 'Depth curve for collision radius'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'SliderJointLength',\r\n 'sliderJointLength',\r\n 'Slider Joint Length',\r\n 'Depth curve for extra horizontal and shear constraint slack'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'AllShrinkScale',\r\n 'allShrinkScale',\r\n 'All Shrink Scale',\r\n 'Depth curve for global shrink stiffness multiplier'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'AllStretchScale',\r\n 'allStretchScale',\r\n 'All Stretch Scale',\r\n 'Depth curve for global stretch stiffness multiplier'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralShrinkVertical',\r\n 'structuralShrinkVertical',\r\n 'Structural Shrink V',\r\n 'Depth curve for structural vertical shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralStretchVertical',\r\n 'structuralStretchVertical',\r\n 'Structural Stretch V',\r\n 'Depth curve for structural vertical stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralShrinkHorizontal',\r\n 'structuralShrinkHorizontal',\r\n 'Structural Shrink H',\r\n 'Depth curve for structural horizontal shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralStretchHorizontal',\r\n 'structuralStretchHorizontal',\r\n 'Structural Stretch H',\r\n 'Depth curve for structural horizontal stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'ShearShrink',\r\n 'shearShrink',\r\n 'Shear Shrink',\r\n 'Depth curve for shear shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'ShearStretch',\r\n 'shearStretch',\r\n 'Shear Stretch',\r\n 'Depth curve for shear stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingShrinkVertical',\r\n 'bendingShrinkVertical',\r\n 'Bending Shrink V',\r\n 'Depth curve for bending vertical shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingStretchVertical',\r\n 'bendingStretchVertical',\r\n 'Bending Stretch V',\r\n 'Depth curve for bending vertical stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingShrinkHorizontal',\r\n 'bendingShrinkHorizontal',\r\n 'Bending Shrink H',\r\n 'Depth curve for bending horizontal shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingStretchHorizontal',\r\n 'bendingStretchHorizontal',\r\n 'Bending Stretch H',\r\n 'Depth curve for bending horizontal stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'FakeWavePowerCurve',\r\n 'fakeWavePower',\r\n 'Fake Wave Power Curve',\r\n 'Depth curve for fake wave amplitude'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'FakeWaveFreq',\r\n 'fakeWaveFreq',\r\n 'Fake Wave Freq',\r\n 'Depth curve for fake wave frequency offset'\r\n )\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getInterpolatorClass(): SerializableClass {\r\n return {\r\n ctor: Interpolator,\r\n name: 'Interpolator',\r\n createFunc(\r\n ctx,\r\n init: { mode: InterpolationMode; target: InterpolationTarget; inputs: string; outputs: string }\r\n ) {\r\n const inputs = init.inputs\r\n ? new Float32Array(base64ToUint8Array(init.inputs).buffer)\r\n : new Float32Array();\r\n const outputs = init.outputs\r\n ? new Float32Array(base64ToUint8Array(init.outputs).buffer)\r\n : new Float32Array();\r\n return { obj: new Interpolator(init.mode, init.target, inputs, outputs) };\r\n },\r\n getInitParams(obj: Interpolator) {\r\n const inputs: Float32Array<ArrayBuffer> =\r\n obj.inputs instanceof Float32Array\r\n ? obj.inputs\r\n : obj.inputs\r\n ? new Float32Array(obj.inputs)\r\n : new Float32Array();\r\n const outputs: Float32Array<ArrayBuffer> =\r\n obj.outputs instanceof Float32Array\r\n ? obj.outputs\r\n : obj.outputs\r\n ? new Float32Array(obj.outputs)\r\n : new Float32Array();\r\n return {\r\n mode: obj.mode,\r\n target: obj.target,\r\n inputs: uint8ArrayToBase64(new Uint8Array(inputs.buffer, inputs.byteOffset, inputs.byteLength)),\r\n outputs: uint8ArrayToBase64(new Uint8Array(outputs.buffer, outputs.byteOffset, outputs.byteLength))\r\n };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Mode',\r\n description:\r\n 'What kind of method does this interpolator use to interpolate data, possible value is `step` | `linear` | `cubicspline` | `cubicspline-natural`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.mode;\r\n }\r\n },\r\n {\r\n name: 'Target',\r\n description:\r\n 'What type of data this interpolator handles, possible value is `number` | `vec2` | `vec3` | `vec4 | `quat`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.target ?? '';\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getInterpolatorScalarClass(): SerializableClass {\r\n return {\r\n ctor: InterpolatorScalar,\r\n name: 'InterpolatorScalar',\r\n createFunc(ctx, init: { mode: InterpolationMode; inputs: string; outputs: string }) {\r\n const inputs = init.inputs\r\n ? new Float32Array(base64ToUint8Array(init.inputs).buffer)\r\n : new Float32Array();\r\n const outputs = init.outputs\r\n ? new Float32Array(base64ToUint8Array(init.outputs).buffer)\r\n : new Float32Array();\r\n return { obj: new Interpolator(init.mode, 'number', inputs, outputs) };\r\n },\r\n getInitParams(obj: InterpolatorScalar) {\r\n const inputs: Float32Array<ArrayBuffer> =\r\n obj.inputs instanceof Float32Array\r\n ? obj.inputs\r\n : obj.inputs\r\n ? new Float32Array(obj.inputs)\r\n : new Float32Array();\r\n const outputs: Float32Array<ArrayBuffer> =\r\n obj.outputs instanceof Float32Array\r\n ? obj.outputs\r\n : obj.outputs\r\n ? new Float32Array(obj.outputs)\r\n : new Float32Array();\r\n return {\r\n mode: obj.mode,\r\n inputs: uint8ArrayToBase64(new Uint8Array(inputs.buffer, inputs.byteOffset, inputs.byteLength)),\r\n outputs: uint8ArrayToBase64(new Uint8Array(outputs.buffer, outputs.byteOffset, outputs.byteLength))\r\n };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Mode',\r\n description:\r\n 'What kind of method does this interpolator use to interpolate data, possible value is `step` | `linear` | `cubicspline` | `cubicspline-natural`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.mode;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getMorphTrackClass(): SerializableClass {\r\n return {\r\n ctor: MorphTargetTrack,\r\n name: 'MorphTargetTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: MorphTargetTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'DefaultWeights',\r\n description: 'Default weights for this track',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n value.object[0] = this.defaultWeights ?? null;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.defaultWeights = (value.object[0] as number[]) ?? null;\r\n }\r\n },\r\n {\r\n name: 'OriginBoundingBox',\r\n description: 'Original bounding box',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n if (!this.originBoundingBox) {\r\n value.object[0] = null;\r\n } else {\r\n const arr = [...this.originBoundingBox.minPoint, ...this.originBoundingBox.maxPoint];\r\n value.object[0] = arr;\r\n }\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n if (!value.object[0]) {\r\n this.originBoundingBox = null;\r\n } else {\r\n const bbox = new AABB();\r\n const values = value.object[0] as number[];\r\n bbox.minPoint.setXYZ(values[0], values[1], values[2]);\r\n bbox.maxPoint.setXYZ(values[3], values[4], values[5]);\r\n this.originBoundingBox = bbox;\r\n }\r\n }\r\n },\r\n {\r\n name: 'BoundingBox',\r\n description: 'Bounding box when this track in action',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n if (!this.boundingBox) {\r\n value.object[0] = null;\r\n } else {\r\n const arr: number[] = [];\r\n for (const box of this.boundingBox) {\r\n arr.push(...box.minPoint);\r\n arr.push(...box.maxPoint);\r\n }\r\n value.object[0] = arr;\r\n }\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n if (!value.object[0]) {\r\n this.boundingBox = null;\r\n } else {\r\n const arr: BoundingBox[] = [];\r\n const values = value.object[0] as number[];\r\n for (let i = 0; i < values.length / 6; i++) {\r\n arr.push(\r\n new BoundingBox(\r\n new Vector3(values[i * 6 + 0], values[i * 6 + 1], values[i * 6 + 2]),\r\n new Vector3(values[i * 6 + 3], values[i * 6 + 4], values[i * 6 + 5])\r\n )\r\n );\r\n }\r\n this.boundingBox = arr;\r\n }\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getMorphTargetGroupTrackClass(): SerializableClass {\r\n return {\r\n ctor: MorphTargetGroupTrack,\r\n name: 'MorphTargetGroupTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'GroupName',\r\n description: 'Morph target group controlled by this track',\r\n type: 'string',\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.groupName;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.groupName = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Scalar interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nfunction encodeFloat32Array(values: Float32Array) {\r\n return uint8ArrayToBase64(new Uint8Array(values.buffer, values.byteOffset, values.byteLength));\r\n}\r\n\r\nfunction decodeFloat32Array(value: string) {\r\n return new Float32Array(base64ToUint8Array(value).buffer);\r\n}\r\n\r\nexport function getFixedGeometryCacheTrackClass(): SerializableClass {\r\n return {\r\n ctor: FixedGeometryCacheTrack,\r\n name: 'FixedGeometryCacheTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Times',\r\n description: 'Keyframe timestamps for this geometry cache track',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.times);\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.times = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'Frames',\r\n description: 'Serialized geometry cache frames for this track',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.object[0] = this.frames.map((frame) => ({\r\n positions: encodeFloat32Array(frame.positions),\r\n normals: frame.normals ? encodeFloat32Array(frame.normals) : '',\r\n bounds: [\r\n frame.boundingBox.minPoint.x,\r\n frame.boundingBox.minPoint.y,\r\n frame.boundingBox.minPoint.z,\r\n frame.boundingBox.maxPoint.x,\r\n frame.boundingBox.maxPoint.y,\r\n frame.boundingBox.maxPoint.z\r\n ]\r\n }));\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.frames = (\r\n (value.object[0] as Array<{\r\n positions: string;\r\n normals: string;\r\n bounds: number[];\r\n }>) ?? []\r\n ).map((frame) => ({\r\n positions: decodeFloat32Array(frame.positions),\r\n normals: frame.normals ? decodeFloat32Array(frame.normals) : null,\r\n boundingBox: new BoundingBox(\r\n new Vector3(frame.bounds[0], frame.bounds[1], frame.bounds[2]),\r\n new Vector3(frame.bounds[3], frame.bounds[4], frame.bounds[5])\r\n )\r\n }));\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getPCAGeometryCacheTrackClass(): SerializableClass {\r\n return {\r\n ctor: PCAGeometryCacheTrack,\r\n name: 'PCAGeometryCacheTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Times',\r\n description: 'Keyframe timestamps for this PCA geometry cache track',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.times);\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.times = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'Bounds',\r\n description: 'Per-frame bounding boxes for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.bounds;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.bounds = (value.object[0] as [number, number, number, number, number, number][]) ?? [];\r\n }\r\n },\r\n {\r\n name: 'PositionReference',\r\n description: 'Reference position data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.positionReference ? encodeFloat32Array(this.positionReference) : '';\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionReference = value.str[0] ? decodeFloat32Array(value.str[0]) : null;\r\n }\r\n },\r\n {\r\n name: 'PositionMean',\r\n description: 'Mean position data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.positionMean);\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionMean = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'PositionBases',\r\n description: 'Principal position basis vectors for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.positionBases.map((item) => encodeFloat32Array(item));\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionBases = ((value.object[0] as string[]) ?? []).map((item) =>\r\n decodeFloat32Array(item)\r\n );\r\n }\r\n },\r\n {\r\n name: 'PositionCoefficients',\r\n description: 'Per-frame position coefficient data for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.positionCoefficients.map((item) => encodeFloat32Array(item));\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionCoefficients = ((value.object[0] as string[]) ?? []).map((item) =>\r\n decodeFloat32Array(item)\r\n );\r\n }\r\n },\r\n {\r\n name: 'NormalMean',\r\n description: 'Mean normal data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.normalMean ? encodeFloat32Array(this.normalMean) : '';\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalMean = value.str[0] ? decodeFloat32Array(value.str[0]) : null;\r\n }\r\n },\r\n {\r\n name: 'NormalBases',\r\n description: 'Principal normal basis vectors for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.normalBases?.map((item) => encodeFloat32Array(item)) ?? [];\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalBases =\r\n ((value.object[0] as string[]) ?? []).map((item) => decodeFloat32Array(item)) ?? null;\r\n }\r\n },\r\n {\r\n name: 'NormalCoefficients',\r\n description: 'Per-frame normal coefficient data for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.normalCoefficients?.map((item) => encodeFloat32Array(item)) ?? [];\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalCoefficients =\r\n ((value.object[0] as string[]) ?? []).map((item) => decodeFloat32Array(item)) ?? null;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeRotationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeRotationTrack,\r\n name: 'NodeRotationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeEulerRotationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeEulerRotationTrack,\r\n name: 'NodeEulerRotationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeTranslationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeTranslationTrack,\r\n name: 'NodeTranslationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeScaleTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeScaleTrack,\r\n name: 'NodeScaleTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getPropTrackClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: PropertyTrack,\r\n name: 'PropertyTrack',\r\n createFunc(ctx, init) {\r\n return { obj: new PropertyTrack(manager.getPropertyByName(init)) };\r\n },\r\n getInitParams(obj: PropertyTrack) {\r\n return manager.getPropertyName(obj.getProp());\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n options: {\r\n label: 'Target'\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackProp',\r\n description: 'Which property of the target object does this track handle',\r\n type: 'string',\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = manager.getPropertyName(this.getProp()) ?? '';\r\n }\r\n },\r\n {\r\n name: 'TrackData',\r\n description: 'Interpolator data used by this property track',\r\n type: 'object_array',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden(this: PropertyTrack, index: number) {\r\n return index >= 0;\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.object = this.interpolatorAlpha\r\n ? [this.interpolator, this.interpolatorAlpha]\r\n : [this.interpolator];\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n this.interpolatorAlpha = value.object[1] as Interpolator;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkeletonClass(): SerializableClass {\r\n return {\r\n ctor: Skeleton,\r\n name: 'Skeleton',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n joints: string[];\r\n rootJoint?: string;\r\n rootBindPose?: string;\r\n inverseBindMatrices: string;\r\n bindPoseMatrices: string;\r\n bindPose: string;\r\n id: string;\r\n }\r\n ) {\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = init.joints\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .map((node) => {\r\n node!.jointTypeT = 'static';\r\n node!.jointTypeS = 'static';\r\n node!.jointTypeR = 'static';\r\n return node;\r\n });\r\n const rootJoint = init.rootJoint ? prefabNode.findNodeById(init.rootJoint) : null;\r\n const inverseBindMatricesArray = new Float32Array(base64ToUint8Array(init.inverseBindMatrices).buffer);\r\n const bindPoseArray = new Float32Array(\r\n base64ToUint8Array(init.bindPose ?? init.bindPoseMatrices).buffer\r\n );\r\n const rootBindPose = init.rootBindPose ? decodeSkeletonBindPose(init.rootBindPose) : undefined;\r\n const inverseBindMatrices: Matrix4x4[] = [];\r\n const bindPose: { rotation: Quaternion; scale: Vector3; position: Vector3 }[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n inverseBindMatrices.push(new Matrix4x4(inverseBindMatricesArray.slice(i * 16, i * 16 + 16)));\r\n if (!init.bindPose) {\r\n const matrix = new Matrix4x4(bindPoseArray.slice(i * 16, i * 16 + 16));\r\n const trs = {\r\n position: new Vector3(),\r\n rotation: new Quaternion(),\r\n scale: new Vector3()\r\n };\r\n matrix.decompose(trs.scale, trs.rotation, trs.position);\r\n bindPose.push(trs);\r\n } else {\r\n bindPose.push({\r\n position: new Vector3(\r\n bindPoseArray[i * 10 + 0],\r\n bindPoseArray[i * 10 + 1],\r\n bindPoseArray[i * 10 + 2]\r\n ),\r\n rotation: new Quaternion(\r\n bindPoseArray[i * 10 + 3],\r\n bindPoseArray[i * 10 + 4],\r\n bindPoseArray[i * 10 + 5],\r\n bindPoseArray[i * 10 + 6]\r\n ),\r\n scale: new Vector3(\r\n bindPoseArray[i * 10 + 7],\r\n bindPoseArray[i * 10 + 8],\r\n bindPoseArray[i * 10 + 9]\r\n )\r\n });\r\n }\r\n }\r\n let rig =\r\n (ctx.animationSet.rigs\r\n .map((ref) => ref.get())\r\n .find(\r\n (item) =>\r\n !!item &&\r\n SkeletonRig.getRigKey(item.joints, item.rootJoint) === SkeletonRig.getRigKey(joints, rootJoint)\r\n ) as SkeletonRig | undefined) ?? null;\r\n if (!rig) {\r\n rig = new SkeletonRig(joints, bindPose, {\r\n rootJoint,\r\n rootBindPose\r\n });\r\n ctx.animationSet.rigs.push(new DRef(rig));\r\n }\r\n const skeleton = new SkinBinding(rig, inverseBindMatrices, joints);\r\n skeleton.persistentId = init.id;\r\n return {\r\n obj: skeleton,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: Skeleton) {\r\n const inverseBindMatrices: number[] = obj.inverseBindMatrices\r\n .map((v) => [...v])\r\n .reduce((a, b) => [...a, ...b], []);\r\n const bindPose: number[] = obj.bindPose\r\n .map((v) => [...v.position, ...v.rotation, ...v.scale])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n rootJoint: obj.rig.rootJoint?.persistentId ?? '',\r\n rootBindPose: encodeSkeletonBindPose(obj.rig.rootBindPose),\r\n inverseBindMatrices: uint8ArrayToBase64(new Uint8Array(new Float32Array(inverseBindMatrices).buffer)),\r\n bindPose: uint8ArrayToBase64(new Uint8Array(new Float32Array(bindPose).buffer)),\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkeletonRigClass(): SerializableClass {\r\n return {\r\n ctor: SkeletonRig,\r\n name: 'SkeletonRig',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n joints: string[];\r\n rootJoint?: string;\r\n rootBindPose?: string;\r\n bindPoseMatrices: string;\r\n bindPose: string;\r\n id: string;\r\n }\r\n ) {\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = init.joints\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .map((node) => {\r\n node!.jointTypeT = 'static';\r\n node!.jointTypeS = 'static';\r\n node!.jointTypeR = 'static';\r\n return node;\r\n });\r\n const rootJoint = init.rootJoint ? prefabNode.findNodeById(init.rootJoint) : null;\r\n const rootBindPose = init.rootBindPose ? decodeSkeletonBindPose(init.rootBindPose) : undefined;\r\n const bindPoseArray = new Float32Array(\r\n base64ToUint8Array(init.bindPose ?? init.bindPoseMatrices).buffer\r\n );\r\n const bindPose: { rotation: Quaternion; scale: Vector3; position: Vector3 }[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n if (!init.bindPose) {\r\n const matrix = new Matrix4x4(bindPoseArray.slice(i * 16, i * 16 + 16));\r\n const trs = {\r\n position: new Vector3(),\r\n rotation: new Quaternion(),\r\n scale: new Vector3()\r\n };\r\n matrix.decompose(trs.scale, trs.rotation, trs.position);\r\n bindPose.push(trs);\r\n } else {\r\n bindPose.push({\r\n position: new Vector3(\r\n bindPoseArray[i * 10 + 0],\r\n bindPoseArray[i * 10 + 1],\r\n bindPoseArray[i * 10 + 2]\r\n ),\r\n rotation: new Quaternion(\r\n bindPoseArray[i * 10 + 3],\r\n bindPoseArray[i * 10 + 4],\r\n bindPoseArray[i * 10 + 5],\r\n bindPoseArray[i * 10 + 6]\r\n ),\r\n scale: new Vector3(\r\n bindPoseArray[i * 10 + 7],\r\n bindPoseArray[i * 10 + 8],\r\n bindPoseArray[i * 10 + 9]\r\n )\r\n });\r\n }\r\n }\r\n const rig = new SkeletonRig(joints, bindPose, {\r\n rootJoint,\r\n rootBindPose\r\n });\r\n rig.persistentId = init.id;\r\n return {\r\n obj: rig,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: SkeletonRig) {\r\n const bindPose: number[] = obj.bindPose\r\n .map((v) => [...v.position, ...v.rotation, ...v.scale])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n rootJoint: obj.rootJoint?.persistentId ?? '',\r\n rootBindPose: encodeSkeletonBindPose(obj.rootBindPose),\r\n bindPose: uint8ArrayToBase64(new Uint8Array(new Float32Array(bindPose).buffer)),\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkinBindingClass(): SerializableClass {\r\n return {\r\n ctor: SkinBinding,\r\n name: 'SkinBinding',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n rig: string;\r\n joints?: string[];\r\n inverseBindMatrices: string;\r\n id: string;\r\n }\r\n ) {\r\n const rig = ctx.findSkeletonRigById(init.rig);\r\n if (!rig) {\r\n throw new Error(`Deserialize SkinBinding failed: skeleton rig '${init.rig}' not found`);\r\n }\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = (init.joints ?? rig.joints.map((joint) => joint.persistentId))\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .filter((node): node is SceneNode => !!node);\r\n const inverseBindMatricesArray = new Float32Array(base64ToUint8Array(init.inverseBindMatrices).buffer);\r\n const inverseBindMatrices: Matrix4x4[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n inverseBindMatrices.push(new Matrix4x4(inverseBindMatricesArray.slice(i * 16, i * 16 + 16)));\r\n }\r\n const binding = new SkinBinding(rig, inverseBindMatrices, joints);\r\n binding.persistentId = init.id;\r\n return {\r\n obj: binding,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: SkinBinding) {\r\n const inverseBindMatrices: number[] = obj.inverseBindMatrices\r\n .map((v) => [...v])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n rig: obj.rig.persistentId,\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n inverseBindMatrices: uint8ArrayToBase64(new Uint8Array(new Float32Array(inverseBindMatrices).buffer)),\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getAnimationClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: AnimationClip,\r\n name: 'AnimationClip',\r\n createFunc(ctx: SceneNode, init: string) {\r\n return { obj: ctx.animationSet.get(init) ?? ctx.animationSet.createAnimation(init, false) };\r\n },\r\n getInitParams(obj: AnimationClip) {\r\n return obj.name;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Name',\r\n description: 'The animation name, unique in `AnimationSet`',\r\n type: 'string',\r\n get(this: AnimationClip, value) {\r\n value.str[0] = this.name;\r\n }\r\n },\r\n {\r\n name: 'Duration',\r\n description: 'Time duration of the animation in seconds',\r\n type: 'float',\r\n default: 1,\r\n get(this: AnimationClip, value) {\r\n value.num[0] = this.timeDuration;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.timeDuration = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Weight of this animation, used in animation blending',\r\n type: 'float',\r\n default: 1,\r\n get(this: AnimationClip, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.weight = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'AutoPlay',\r\n description: 'Whether this animation should automatically start playing when model is loaded',\r\n type: 'bool',\r\n default: false,\r\n get(this: AnimationClip, value) {\r\n value.bool[0] = this.autoPlay;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.autoPlay = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Rigs',\r\n description: 'Rig references used by this animation clip',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object[0] = [...this.skeletons];\r\n },\r\n set(this: AnimationClip, value) {\r\n if (!this.skeletons) {\r\n this.skeletons = new Set();\r\n }\r\n for (const val of (value.object[0] as string[]) ?? []) {\r\n this.skeletons.add(val);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Skeletons',\r\n description: 'Legacy skeleton references used by this animation clip',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object[0] = [];\r\n },\r\n set(this: AnimationClip, value) {\r\n if (!this.skeletons) {\r\n this.skeletons = new Set();\r\n }\r\n for (const val of (value.object[0] as string[]) ?? []) {\r\n this.skeletons.add(val);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Tracks',\r\n description: 'Animation tracks of this animation clip',\r\n type: 'object_array',\r\n options: {\r\n edit: 'proptrack',\r\n objectTypes: [PropertyTrack]\r\n },\r\n readonly: true,\r\n isHidden(this: AnimationClip, index: number, obj: unknown) {\r\n if (index < 0) {\r\n return false;\r\n } else {\r\n return !(obj instanceof PropertyTrack);\r\n }\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object = [];\r\n for (const tracks of this.tracks) {\r\n for (const track of tracks[1]) {\r\n if (tracks[0] instanceof SceneNode && !(track instanceof PropertyTrack)) {\r\n track.target = tracks[0].persistentId;\r\n }\r\n }\r\n //value.object.push(...tracks[1].filter((track) => track instanceof PropertyTrack));\r\n value.object.push(...tracks[1]);\r\n }\r\n },\r\n set(this: AnimationClip, value) {\r\n for (const track of value.object) {\r\n if (track instanceof PropertyTrack) {\r\n const targetObj = manager.findAnimationTarget(this._animationSet.model, track);\r\n if (targetObj) {\r\n this.addTrack(targetObj, track);\r\n }\r\n } else if (track instanceof AnimationTrack) {\r\n const prefabNode = this._animationSet.model.getPrefabNode() ?? this._animationSet.model;\r\n const node = prefabNode.findNodeById(track.target);\r\n if (node) {\r\n this.addTrack(node, track);\r\n } else {\r\n console.error(`No node found with id = ${track.target}`);\r\n }\r\n }\r\n }\r\n },\r\n delete(this: AnimationClip, index) {\r\n const trackList: AnimationTrack[] = [];\r\n for (const tracks of this.tracks) {\r\n trackList.push(...tracks[1].filter((track) => track instanceof PropertyTrack));\r\n }\r\n const trackToRemove = trackList[index];\r\n if (trackToRemove) {\r\n this.deleteTrack(trackToRemove);\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["jointDynamicsModifierSkeletons","WeakMap","springModifierSkeletons","encodeSkeletonBindPose","bindPose","uint8ArrayToBase64","Uint8Array","Float32Array","position","rotation","scale","buffer","decodeSkeletonBindPose","encoded","data","base64ToUint8Array","Vector3","Quaternion","vectorToArray","value","x","y","z","vectorFromArray","defaultValue","zero","Array","isArray","clone","quaternionToArray","w","quaternionFromArray","undefined","serializeSpringChain","chain","particles","map","particle","node","persistentId","anchorNode","anchorOffset","originalPosition","originalRotation","mass","damping","fixed","constraints","constraint","particleA","particleB","restLength","stiffness","compliance","deserializeSpringChain","ctx","SpringChain","item","findSerializedNode","worldMatrix","m03","m13","m23","decompose","addParticle","createSpringParticle","length","addConstraint","createSpringConstraint","serializeSpringCollider","collider","type","sphere","enabled","center","radius","localRadius","localRadiusScaleRef","localOffset","capsule","start","end","localStartOffset","localEndOffset","plane","point","normal","localPointOffset","localNormal","restoreSpringColliderRadiusScale","createdScaleRef","Number","isFinite","Math","abs","inferredScaleRef","deserializeSpringCollider","createSphereCollider","createCapsuleCollider","createPlaneCollider","getSpringSystemOptions","system","iterations","gravity","wind","enableInertialForces","centrifugalScale","coriolisScale","solver","poseFollow","poseFollowRoot","poseFollowTip","poseFollowExponent","maxPoseOffset","maxPoseOffsetRoot","maxPoseOffsetTip","deserializeSpringSystemOptions","options","serializeScalarCurve","mode","inputs","outputs","deserializeScalarCurve","InterpolatorScalar","serializeControllerConfig","curves","key","curve","Object","entries","windForce","relaxation","subSteps","rootSlideLimit","rootRotateLimit","constraintShrinkLimit","blendRatio","stabilizationFrameRate","isFakeWave","fakeWaveSpeed","fakeWavePower","enableSurfaceCollision","enableBroadPhase","preserveTwist","angleLimitConfig","constraintOptions","deserializeControllerConfig","fromEntries","config","keys","root","id","prefabNode","getPrefabNode","findNodeById","scene","setJointDynamicsModifierSkeleton","modifier","skeleton","set","getJointDynamicsModifierSkeleton","get","setSpringModifierSkeleton","getSpringModifierSkeleton","jointDynamicsPropOptions","group","isJointDynamicsEditorPropPersistent","updateJointDynamicsConfig","jointDynamicsSystem","controller","updateConfig","createJointDynamicsNumberProp","name","label","description","minValue","isPersistent","num","getConfig","createJointDynamicsBooleanProp","bool","createJointDynamicsVectorProp","v","createJointDynamicsAngleLimitNumberProp","createJointDynamicsAngleLimitBooleanProp","createJointDynamicsConstraintOptionProp","createJointDynamicsCurveProp","evaluate","val","constant","getSpringModifierClass","ctor","SpringModifier","createFunc","init","findSkeletonRigById","findSkeletonById","rig","chains","obj","loadProps","some","systemType","SpringSystem","multiChainSystem","MultiChainSpringSystem","addChain","interChainConstraints","chainAIndex","chainBIndex","addInterChainConstraint","lambda","colliderData","colliders","addCollider","weight","sourceId","getInitParams","springSystem","isMultiChain","Error","_lambda","getProps","defineProps","command","reset","str","maxValue","getJointDynamicsModifierClass","JointDynamicsModifier","systemRoot","startAnchor","endAnchor","startAnchorOffset","endAnchorOffset","filter","isParentOf","serializedColliders","transform","r","createTransformAccess","SceneNode","serializedGrabbers","grabbers","grabber","flatPlanes","up","axisPY","controllerConfig","chainConfig","JointDynamicsSystem","i","setColliderEnabledAt","setFlatPlaneEnabledAt","getColliderSnapshots","getFlatPlaneSnapshots","getGrabberSnapshots","getInterpolatorClass","Interpolator","target","byteOffset","byteLength","getInterpolatorScalarClass","getMorphTrackClass","MorphTargetTrack","objectTypes","isHidden","object","interpolator","defaultWeights","originBoundingBox","arr","minPoint","maxPoint","bbox","AABB","values","setXYZ","boundingBox","box","push","BoundingBox","getMorphTargetGroupTrackClass","MorphTargetGroupTrack","groupName","encodeFloat32Array","decodeFloat32Array","getFixedGeometryCacheTrackClass","FixedGeometryCacheTrack","times","frames","frame","positions","normals","bounds","getPCAGeometryCacheTrackClass","PCAGeometryCacheTrack","positionReference","positionMean","positionBases","positionCoefficients","normalMean","normalBases","normalCoefficients","getNodeRotationTrackClass","NodeRotationTrack","getNodeEulerRotationTrackClass","NodeEulerRotationTrack","getNodeTranslationTrackClass","NodeTranslationTrack","getNodeScaleTrackClass","NodeScaleTrack","getPropTrackClass","manager","PropertyTrack","getPropertyByName","getPropertyName","getProp","index","interpolatorAlpha","getSkeletonClass","Skeleton","joints","jointTypeT","jointTypeS","jointTypeR","rootJoint","inverseBindMatricesArray","inverseBindMatrices","bindPoseArray","bindPoseMatrices","rootBindPose","Matrix4x4","slice","matrix","trs","animationSet","rigs","ref","find","SkeletonRig","getRigKey","DRef","SkinBinding","reduce","a","b","joint","getSkeletonRigClass","getSkinBindingClass","binding","getAnimationClass","AnimationClip","createAnimation","default","timeDuration","autoPlay","skeletons","Set","add","edit","readonly","tracks","track","targetObj","findAnimationTarget","_animationSet","model","addTrack","AnimationTrack","console","error","delete","trackList","trackToRemove","deleteTrack"],"mappings":"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"}
1
+ {"version":3,"file":"animation.js","sources":["../../../../src/utility/serialization/scene/animation.ts"],"sourcesContent":["import type { InterpolationMode, InterpolationTarget } from '@zephyr3d/base';\r\nimport { AABB, DRef, InterpolatorScalar, Quaternion } from '@zephyr3d/base';\r\nimport { base64ToUint8Array, Matrix4x4, uint8ArrayToBase64 } from '@zephyr3d/base';\r\nimport { Interpolator, Vector3 } from '@zephyr3d/base';\r\nimport { AnimationTrack, Skeleton, SkeletonRig, SkinBinding } from '../../../animation';\r\nimport type { SkeletonBindPose } from '../../../animation';\r\nimport {\r\n AnimationClip,\r\n FixedGeometryCacheTrack,\r\n JointDynamicsModifier,\r\n JointDynamicsSystem,\r\n MultiChainSpringSystem,\r\n SpringChain,\r\n SpringModifier,\r\n SpringSystem,\r\n createCapsuleCollider,\r\n createPlaneCollider,\r\n createSphereCollider,\r\n createSpringConstraint,\r\n createSpringParticle,\r\n createTransformAccess,\r\n PCAGeometryCacheTrack,\r\n MorphTargetTrack,\r\n MorphTargetGroupTrack,\r\n NodeEulerRotationTrack,\r\n NodeRotationTrack,\r\n NodeScaleTrack,\r\n NodeTranslationTrack,\r\n PropertyTrack\r\n} from '../../../animation';\r\nimport type { ControllerConfig, ControllerConfigUpdate } from '../../../animation/joint_dynamics/controller';\r\nimport type { ColliderR, GrabberR, JointDynamicSystemConfig } from '../../../animation/joint_dynamics';\r\nimport type {\r\n CapsuleCollider,\r\n InterChainConstraint,\r\n PlaneCollider,\r\n SphereCollider,\r\n SpringCollider,\r\n SpringSystemOptions\r\n} from '../../../animation/spring';\r\nimport type { ResourceManager } from '../manager';\r\nimport { defineProps, type PropertyValue, type SerializableClass } from '../types';\r\nimport { SceneNode } from '../../../scene';\r\nimport { BoundingBox } from '../../bounding_volume';\r\n\r\ntype SerializedScalarCurve = {\r\n mode: InterpolationMode;\r\n inputs: number[];\r\n outputs: number[];\r\n};\r\n\r\ntype SerializedControllerConfig = Partial<Omit<ControllerConfig, 'gravity' | 'windForce' | 'curves'>> & {\r\n gravity?: number[];\r\n windForce?: number[];\r\n curves?: Record<string, SerializedScalarCurve>;\r\n};\r\n\r\ntype SerializedJointDynamicsCollider = {\r\n collider: ColliderR;\r\n transform?: string;\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsFlatPlane = {\r\n up: number[];\r\n position: number[];\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsGrabber = {\r\n grabber: GrabberR;\r\n transform?: string;\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedJointDynamicsModifier = {\r\n skeleton: string;\r\n systemRoot: string;\r\n chains: {\r\n start: string;\r\n end: string;\r\n startAnchor?: string;\r\n endAnchor?: string;\r\n startAnchorOffset?: number[];\r\n endAnchorOffset?: number[];\r\n }[];\r\n controllerConfig?: SerializedControllerConfig;\r\n colliders?: SerializedJointDynamicsCollider[];\r\n flatPlanes?: SerializedJointDynamicsFlatPlane[];\r\n grabbers?: SerializedJointDynamicsGrabber[];\r\n enabled?: boolean;\r\n};\r\n\r\ntype SerializedSpringParticle = {\r\n node?: string;\r\n anchorNode?: string;\r\n anchorOffset?: number[];\r\n originalPosition: number[];\r\n originalRotation?: number[];\r\n mass: number;\r\n damping: number;\r\n fixed: boolean;\r\n};\r\n\r\ntype SerializedSpringChain = {\r\n particles: SerializedSpringParticle[];\r\n constraints: {\r\n particleA: number;\r\n particleB: number;\r\n restLength: number;\r\n stiffness: number;\r\n compliance: number;\r\n }[];\r\n};\r\n\r\ntype SerializedSpringCollider =\r\n | {\r\n type: 'sphere';\r\n node?: string;\r\n enabled: boolean;\r\n center: number[];\r\n radius: number;\r\n localRadius?: number;\r\n localRadiusScaleRef?: number;\r\n localOffset?: number[];\r\n }\r\n | {\r\n type: 'capsule';\r\n node?: string;\r\n enabled: boolean;\r\n start: number[];\r\n end: number[];\r\n radius: number;\r\n localRadius?: number;\r\n localRadiusScaleRef?: number;\r\n localStartOffset?: number[];\r\n localEndOffset?: number[];\r\n }\r\n | {\r\n type: 'plane';\r\n node?: string;\r\n enabled: boolean;\r\n point: number[];\r\n normal: number[];\r\n localPointOffset?: number[];\r\n localNormal?: number[];\r\n };\r\n\r\ntype SerializedSpringSystemOptions = Omit<SpringSystemOptions, 'gravity' | 'wind'> & {\r\n gravity: number[];\r\n wind: number[];\r\n};\r\n\r\ntype SerializedSpringModifier = {\r\n skeleton: string;\r\n sourceId?: string;\r\n systemType: 'single' | 'multi';\r\n options: SerializedSpringSystemOptions;\r\n chains: SerializedSpringChain[];\r\n interChainConstraints?: Omit<InterChainConstraint, 'lambda'>[];\r\n colliders?: SerializedSpringCollider[];\r\n enabled?: boolean;\r\n weight?: number;\r\n};\r\n\r\nconst jointDynamicsModifierSkeletons = new WeakMap<JointDynamicsModifier, SkeletonRig>();\r\nconst springModifierSkeletons = new WeakMap<SpringModifier, SkeletonRig>();\r\n\r\nfunction encodeSkeletonBindPose(bindPose: SkeletonBindPose): string {\r\n return uint8ArrayToBase64(\r\n new Uint8Array(new Float32Array([...bindPose.position, ...bindPose.rotation, ...bindPose.scale]).buffer)\r\n );\r\n}\r\n\r\nfunction decodeSkeletonBindPose(encoded: string): SkeletonBindPose {\r\n const data = new Float32Array(base64ToUint8Array(encoded).buffer);\r\n return {\r\n position: new Vector3(data[0], data[1], data[2]),\r\n rotation: new Quaternion(data[3], data[4], data[5], data[6]),\r\n scale: new Vector3(data[7], data[8], data[9])\r\n };\r\n}\r\n\r\nfunction encodeSkeletonPose(pose: SkeletonBindPose[]): string {\r\n const values = pose.flatMap((transform) => [\r\n ...transform.position,\r\n ...transform.rotation,\r\n ...transform.scale\r\n ]);\r\n return uint8ArrayToBase64(new Uint8Array(new Float32Array(values).buffer));\r\n}\r\n\r\nfunction decodeSkeletonPose(encoded: string, jointCount: number): SkeletonBindPose[] {\r\n const data = new Float32Array(base64ToUint8Array(encoded).buffer);\r\n if (data.length !== jointCount * 10) {\r\n throw new Error('Invalid serialized skeleton pose');\r\n }\r\n const pose: SkeletonBindPose[] = [];\r\n for (let i = 0; i < jointCount; i++) {\r\n pose.push({\r\n position: new Vector3(data[i * 10 + 0], data[i * 10 + 1], data[i * 10 + 2]),\r\n rotation: new Quaternion(data[i * 10 + 3], data[i * 10 + 4], data[i * 10 + 5], data[i * 10 + 6]),\r\n scale: new Vector3(data[i * 10 + 7], data[i * 10 + 8], data[i * 10 + 9])\r\n });\r\n }\r\n return pose;\r\n}\r\n\r\nfunction vectorToArray(value: Vector3): number[] {\r\n return [value.x, value.y, value.z];\r\n}\r\n\r\nfunction vectorFromArray(value: number[] | undefined, defaultValue = Vector3.zero()): Vector3 {\r\n return Array.isArray(value)\r\n ? new Vector3(value[0] ?? 0, value[1] ?? 0, value[2] ?? 0)\r\n : defaultValue.clone();\r\n}\r\n\r\nfunction quaternionToArray(value: Quaternion): number[] {\r\n return [value.x, value.y, value.z, value.w];\r\n}\r\n\r\nfunction quaternionFromArray(value: number[] | undefined): Quaternion | undefined {\r\n return Array.isArray(value)\r\n ? new Quaternion(value[0] ?? 0, value[1] ?? 0, value[2] ?? 0, value[3] ?? 1)\r\n : undefined;\r\n}\r\n\r\nfunction serializeSpringChain(chain: SpringChain): SerializedSpringChain {\r\n return {\r\n particles: chain.particles.map((particle) => ({\r\n ...(particle.node ? { node: particle.node.persistentId } : {}),\r\n ...(particle.anchorNode ? { anchorNode: particle.anchorNode.persistentId } : {}),\r\n ...(particle.anchorOffset ? { anchorOffset: vectorToArray(particle.anchorOffset) } : {}),\r\n originalPosition: vectorToArray(particle.originalPosition),\r\n ...(particle.originalRotation\r\n ? { originalRotation: quaternionToArray(particle.originalRotation) }\r\n : {}),\r\n mass: particle.mass,\r\n damping: particle.damping,\r\n fixed: particle.fixed\r\n })),\r\n constraints: chain.constraints.map((constraint) => ({\r\n particleA: constraint.particleA,\r\n particleB: constraint.particleB,\r\n restLength: constraint.restLength,\r\n stiffness: constraint.stiffness,\r\n compliance: constraint.compliance\r\n }))\r\n };\r\n}\r\n\r\nfunction deserializeSpringChain(ctx: SceneNode, data: SerializedSpringChain): SpringChain | null {\r\n const chain = new SpringChain();\r\n for (const item of data.particles ?? []) {\r\n const node = findSerializedNode(ctx, item.node);\r\n const anchorNode = findSerializedNode(ctx, item.anchorNode);\r\n if ((item.node && !node) || (item.anchorNode && !anchorNode)) {\r\n return null;\r\n }\r\n const position = node\r\n ? new Vector3(node.worldMatrix.m03, node.worldMatrix.m13, node.worldMatrix.m23)\r\n : vectorFromArray(item.originalPosition);\r\n let originalRotation = quaternionFromArray(item.originalRotation);\r\n if (node) {\r\n originalRotation = new Quaternion();\r\n node.worldMatrix.decompose(null, originalRotation, null);\r\n }\r\n chain.addParticle(\r\n createSpringParticle(position, {\r\n mass: item.mass,\r\n damping: item.damping,\r\n fixed: item.fixed,\r\n node: node ?? undefined,\r\n anchorNode: anchorNode ?? undefined,\r\n anchorOffset: item.anchorOffset ? vectorFromArray(item.anchorOffset) : undefined,\r\n originalRotation\r\n })\r\n );\r\n }\r\n for (const item of data.constraints ?? []) {\r\n if (\r\n item.particleA < 0 ||\r\n item.particleB < 0 ||\r\n item.particleA >= chain.particles.length ||\r\n item.particleB >= chain.particles.length\r\n ) {\r\n return null;\r\n }\r\n chain.addConstraint(\r\n createSpringConstraint(item.particleA, item.particleB, item.restLength, item.stiffness, item.compliance)\r\n );\r\n }\r\n return chain.particles.length > 0 ? chain : null;\r\n}\r\n\r\nfunction serializeSpringCollider(collider: SpringCollider): SerializedSpringCollider {\r\n switch (collider.type) {\r\n case 'sphere': {\r\n const sphere = collider as SphereCollider;\r\n return {\r\n type: 'sphere',\r\n ...(sphere.node ? { node: sphere.node.persistentId } : {}),\r\n enabled: sphere.enabled,\r\n center: vectorToArray(sphere.center),\r\n radius: sphere.radius,\r\n ...(sphere.localRadius !== undefined ? { localRadius: sphere.localRadius } : {}),\r\n ...(sphere.localRadiusScaleRef !== undefined\r\n ? { localRadiusScaleRef: sphere.localRadiusScaleRef }\r\n : {}),\r\n ...(sphere.localOffset ? { localOffset: vectorToArray(sphere.localOffset) } : {})\r\n };\r\n }\r\n case 'capsule': {\r\n const capsule = collider as CapsuleCollider;\r\n return {\r\n type: 'capsule',\r\n ...(capsule.node ? { node: capsule.node.persistentId } : {}),\r\n enabled: capsule.enabled,\r\n start: vectorToArray(capsule.start),\r\n end: vectorToArray(capsule.end),\r\n radius: capsule.radius,\r\n ...(capsule.localRadius !== undefined ? { localRadius: capsule.localRadius } : {}),\r\n ...(capsule.localRadiusScaleRef !== undefined\r\n ? { localRadiusScaleRef: capsule.localRadiusScaleRef }\r\n : {}),\r\n ...(capsule.localStartOffset ? { localStartOffset: vectorToArray(capsule.localStartOffset) } : {}),\r\n ...(capsule.localEndOffset ? { localEndOffset: vectorToArray(capsule.localEndOffset) } : {})\r\n };\r\n }\r\n case 'plane': {\r\n const plane = collider as PlaneCollider;\r\n return {\r\n type: 'plane',\r\n ...(plane.node ? { node: plane.node.persistentId } : {}),\r\n enabled: plane.enabled,\r\n point: vectorToArray(plane.point),\r\n normal: vectorToArray(plane.normal),\r\n ...(plane.localPointOffset ? { localPointOffset: vectorToArray(plane.localPointOffset) } : {}),\r\n ...(plane.localNormal ? { localNormal: vectorToArray(plane.localNormal) } : {})\r\n };\r\n }\r\n }\r\n}\r\n\r\nfunction restoreSpringColliderRadiusScale(\r\n collider: SphereCollider | CapsuleCollider,\r\n data: Extract<SerializedSpringCollider, { type: 'sphere' | 'capsule' }>\r\n): void {\r\n const createdScaleRef = collider.localRadiusScaleRef;\r\n if (data.localRadiusScaleRef !== undefined) {\r\n collider.localRadiusScaleRef = data.localRadiusScaleRef;\r\n } else if (\r\n data.localRadius !== undefined &&\r\n createdScaleRef !== undefined &&\r\n Number.isFinite(data.localRadius) &&\r\n Number.isFinite(data.radius) &&\r\n Math.abs(data.radius) > 1e-6\r\n ) {\r\n // Older serialized modifiers omitted the authored scale reference. Recover it\r\n // from the stored world radius and the node scale captured by the constructor.\r\n const inferredScaleRef = (data.localRadius * createdScaleRef) / data.radius;\r\n if (Number.isFinite(inferredScaleRef) && Math.abs(inferredScaleRef) > 1e-6) {\r\n collider.localRadiusScaleRef = Math.abs(inferredScaleRef);\r\n }\r\n }\r\n collider.radius = data.radius;\r\n}\r\n\r\nfunction deserializeSpringCollider(ctx: SceneNode, data: SerializedSpringCollider): SpringCollider | null {\r\n const node = findSerializedNode(ctx, data.node);\r\n if (data.node && !node) {\r\n return null;\r\n }\r\n let collider: SpringCollider;\r\n switch (data.type) {\r\n case 'sphere': {\r\n const sphere = createSphereCollider(\r\n node && data.localOffset ? vectorFromArray(data.localOffset) : vectorFromArray(data.center),\r\n node ? (data.localRadius ?? data.radius) : data.radius,\r\n node ?? undefined\r\n );\r\n restoreSpringColliderRadiusScale(sphere, data);\r\n collider = sphere;\r\n break;\r\n }\r\n case 'capsule': {\r\n const capsule = createCapsuleCollider(\r\n node && data.localStartOffset ? vectorFromArray(data.localStartOffset) : vectorFromArray(data.start),\r\n node && data.localEndOffset ? vectorFromArray(data.localEndOffset) : vectorFromArray(data.end),\r\n node ? (data.localRadius ?? data.radius) : data.radius,\r\n node ?? undefined\r\n );\r\n restoreSpringColliderRadiusScale(capsule, data);\r\n collider = capsule;\r\n break;\r\n }\r\n case 'plane':\r\n collider = createPlaneCollider(\r\n node && data.localPointOffset ? vectorFromArray(data.localPointOffset) : vectorFromArray(data.point),\r\n node && data.localNormal ? vectorFromArray(data.localNormal) : vectorFromArray(data.normal),\r\n node ?? undefined\r\n );\r\n break;\r\n }\r\n collider.enabled = data.enabled;\r\n return collider;\r\n}\r\n\r\nfunction getSpringSystemOptions(\r\n system: SpringSystem | MultiChainSpringSystem\r\n): SerializedSpringSystemOptions {\r\n return {\r\n iterations: system.iterations,\r\n gravity: vectorToArray(system.gravity),\r\n wind: vectorToArray(system.wind),\r\n enableInertialForces: system.enableInertialForces,\r\n centrifugalScale: system.centrifugalScale,\r\n coriolisScale: system.coriolisScale,\r\n solver: system.solver,\r\n poseFollow: system.poseFollow,\r\n poseFollowRoot: system.poseFollowRoot,\r\n poseFollowTip: system.poseFollowTip,\r\n poseFollowExponent: system.poseFollowExponent,\r\n maxPoseOffset: system.maxPoseOffset,\r\n maxPoseOffsetRoot: system.maxPoseOffsetRoot,\r\n maxPoseOffsetTip: system.maxPoseOffsetTip\r\n };\r\n}\r\n\r\nfunction deserializeSpringSystemOptions(options: SerializedSpringSystemOptions): SpringSystemOptions {\r\n return {\r\n ...options,\r\n gravity: vectorFromArray(options.gravity, new Vector3(0, -9.8, 0)),\r\n wind: vectorFromArray(options.wind)\r\n };\r\n}\r\n\r\nfunction serializeScalarCurve(value: InterpolatorScalar): SerializedScalarCurve {\r\n return {\r\n mode: value.mode,\r\n inputs: [...value.inputs],\r\n outputs: [...value.outputs]\r\n };\r\n}\r\n\r\nfunction deserializeScalarCurve(value: SerializedScalarCurve): InterpolatorScalar {\r\n return new InterpolatorScalar(\r\n value?.mode ?? 'step',\r\n new Float32Array(value?.inputs ?? [0]),\r\n new Float32Array(value?.outputs ?? [0])\r\n );\r\n}\r\n\r\nfunction serializeControllerConfig(value: ControllerConfig): SerializedControllerConfig {\r\n const curves: Record<string, SerializedScalarCurve> = {};\r\n for (const [key, curve] of Object.entries(value.curves)) {\r\n curves[key] = serializeScalarCurve(curve);\r\n }\r\n return {\r\n gravity: vectorToArray(value.gravity),\r\n windForce: vectorToArray(value.windForce),\r\n relaxation: value.relaxation,\r\n subSteps: value.subSteps,\r\n rootSlideLimit: value.rootSlideLimit,\r\n rootRotateLimit: value.rootRotateLimit,\r\n constraintShrinkLimit: value.constraintShrinkLimit,\r\n blendRatio: value.blendRatio,\r\n stabilizationFrameRate: value.stabilizationFrameRate,\r\n isFakeWave: value.isFakeWave,\r\n fakeWaveSpeed: value.fakeWaveSpeed,\r\n fakeWavePower: value.fakeWavePower,\r\n enableSurfaceCollision: value.enableSurfaceCollision,\r\n enableBroadPhase: value.enableBroadPhase,\r\n preserveTwist: value.preserveTwist,\r\n angleLimitConfig: { ...value.angleLimitConfig },\r\n curves,\r\n constraintOptions: { ...value.constraintOptions }\r\n };\r\n}\r\n\r\nfunction deserializeControllerConfig(\r\n value: SerializedControllerConfig | undefined\r\n): JointDynamicSystemConfig['controllerConfig'] {\r\n if (!value) {\r\n return undefined;\r\n }\r\n const curves = Object.fromEntries(\r\n Object.entries(value.curves ?? {}).map(([key, curve]) => [key, deserializeScalarCurve(curve)])\r\n ) as Partial<ControllerConfig['curves']>;\r\n const config: JointDynamicSystemConfig['controllerConfig'] = {};\r\n if (value.gravity) {\r\n config.gravity = vectorFromArray(value.gravity, new Vector3(0, -9.8, 0));\r\n }\r\n if (value.windForce) {\r\n config.windForce = vectorFromArray(value.windForce);\r\n }\r\n for (const key of [\r\n 'relaxation',\r\n 'subSteps',\r\n 'rootSlideLimit',\r\n 'rootRotateLimit',\r\n 'constraintShrinkLimit',\r\n 'blendRatio',\r\n 'stabilizationFrameRate',\r\n 'isFakeWave',\r\n 'fakeWaveSpeed',\r\n 'fakeWavePower',\r\n 'enableSurfaceCollision',\r\n 'enableBroadPhase',\r\n 'preserveTwist'\r\n ] as const) {\r\n if (value[key] !== undefined) {\r\n config[key] = value[key] as never;\r\n }\r\n }\r\n if (value.angleLimitConfig) {\r\n config.angleLimitConfig = { ...value.angleLimitConfig };\r\n }\r\n if (Object.keys(curves).length > 0) {\r\n config.curves = curves;\r\n }\r\n if (value.constraintOptions) {\r\n config.constraintOptions = { ...value.constraintOptions };\r\n }\r\n return config;\r\n}\r\n\r\nfunction findSerializedNode(root: SceneNode, id: string | undefined): SceneNode | null {\r\n if (!id) {\r\n return null;\r\n }\r\n const prefabNode = root.getPrefabNode() ?? root;\r\n return prefabNode.findNodeById(id) ?? root.scene?.findNodeById(id) ?? null;\r\n}\r\n\r\nexport function setJointDynamicsModifierSkeleton(\r\n modifier: JointDynamicsModifier,\r\n skeleton: SkeletonRig\r\n): void {\r\n jointDynamicsModifierSkeletons.set(modifier, skeleton);\r\n}\r\n\r\nexport function getJointDynamicsModifierSkeleton(modifier: JointDynamicsModifier): SkeletonRig | null {\r\n return jointDynamicsModifierSkeletons.get(modifier) ?? null;\r\n}\r\n\r\n/** @internal */\r\nexport function setSpringModifierSkeleton(modifier: SpringModifier, skeleton: SkeletonRig): void {\r\n springModifierSkeletons.set(modifier, skeleton);\r\n}\r\n\r\n/** @internal */\r\nexport function getSpringModifierSkeleton(modifier: SpringModifier): SkeletonRig | null {\r\n return springModifierSkeletons.get(modifier) ?? null;\r\n}\r\n\r\ntype JointDynamicsNumberConfigKey = {\r\n [K in keyof ControllerConfig]: ControllerConfig[K] extends number ? K : never;\r\n}[keyof ControllerConfig];\r\n\r\ntype JointDynamicsBooleanConfigKey = {\r\n [K in keyof ControllerConfig]: ControllerConfig[K] extends boolean ? K : never;\r\n}[keyof ControllerConfig];\r\n\r\ntype JointDynamicsCurveKey = keyof ControllerConfig['curves'];\r\ntype JointDynamicsConstraintOptionKey = keyof ControllerConfig['constraintOptions'];\r\n\r\nconst jointDynamicsPropOptions = { group: 'Joint Dynamics' };\r\n\r\nfunction isJointDynamicsEditorPropPersistent() {\r\n return false;\r\n}\r\n\r\nfunction updateJointDynamicsConfig(modifier: JointDynamicsModifier, config: ControllerConfigUpdate): void {\r\n modifier.jointDynamicsSystem.controller.updateConfig(config);\r\n}\r\n\r\nfunction createJointDynamicsNumberProp(\r\n name: string,\r\n key: JointDynamicsNumberConfigKey,\r\n label: string,\r\n description: string,\r\n type: 'float' | 'int',\r\n minValue?: number\r\n) {\r\n return {\r\n name,\r\n description,\r\n type,\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label,\r\n ...(minValue !== undefined ? { minValue } : {})\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig()[key] as number;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, { [key]: value.num[0] } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsBooleanProp(\r\n name: string,\r\n key: JointDynamicsBooleanConfigKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig()[key] as boolean;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, { [key]: value.bool[0] } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsVectorProp(\r\n name: string,\r\n key: 'gravity' | 'windForce',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'vec3',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n const v = this.jointDynamicsSystem.controller.getConfig()[key];\r\n value.num[0] = v.x;\r\n value.num[1] = v.y;\r\n value.num[2] = v.z;\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, {\r\n [key]: new Vector3(value.num[0], value.num[1], value.num[2])\r\n } as ControllerConfigUpdate);\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsAngleLimitNumberProp(\r\n name: string,\r\n key: 'angleLimit',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig().angleLimitConfig[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n updateJointDynamicsConfig(this, {\r\n angleLimitConfig: { [key]: value.num[0] }\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsAngleLimitBooleanProp(\r\n name: string,\r\n key: 'limitFromRoot',\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig().angleLimitConfig[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, {\r\n angleLimitConfig: { [key]: value.bool[0] }\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsConstraintOptionProp(\r\n name: string,\r\n key: JointDynamicsConstraintOptionKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n value.bool[0] = this.jointDynamicsSystem.controller.getConfig().constraintOptions[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'bool'>>) {\r\n updateJointDynamicsConfig(this, {\r\n constraintOptions: { [key]: value.bool[0] } as Partial<ControllerConfig['constraintOptions']>\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction createJointDynamicsCurveProp(\r\n name: string,\r\n key: JointDynamicsCurveKey,\r\n label: string,\r\n description: string\r\n) {\r\n return {\r\n name,\r\n description,\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n value.num[0] = this.jointDynamicsSystem.controller.getConfig().curves[key].evaluate(0);\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'num'>>) {\r\n const val = value.num[0];\r\n updateJointDynamicsConfig(this, {\r\n curves: {\r\n [key]: InterpolatorScalar.constant(val)\r\n }\r\n });\r\n }\r\n };\r\n /*\r\n return {\r\n name,\r\n description,\r\n type: 'object',\r\n readonly: true,\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label,\r\n objectTypes: [Interpolator],\r\n edit: 'curve1f' as const\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'object'>>) {\r\n value.object[0] = this.jointDynamicsSystem.controller.getConfig().curves[key];\r\n },\r\n set(this: JointDynamicsModifier, value: Required<Pick<PropertyValue, 'object'>>) {\r\n const curve = value.object[0];\r\n if (curve instanceof InterpolatorScalar) {\r\n updateJointDynamicsConfig(this, { curves: { [key]: curve } as Partial<ControllerConfig['curves']> });\r\n } else if (curve instanceof Interpolator && curve.target === 'number') {\r\n updateJointDynamicsConfig(this, {\r\n curves: {\r\n [key]: new InterpolatorScalar(\r\n curve.mode,\r\n new Float32Array(curve.inputs),\r\n new Float32Array(curve.outputs)\r\n )\r\n } as Partial<ControllerConfig['curves']>\r\n });\r\n }\r\n }\r\n };\r\n */\r\n}\r\n\r\n/** @internal */\r\nexport function getSpringModifierClass(): SerializableClass {\r\n return {\r\n ctor: SpringModifier,\r\n name: 'SpringModifier',\r\n createFunc(ctx: SceneNode, init: SerializedSpringModifier) {\r\n const skeleton =\r\n ctx.findSkeletonRigById(init.skeleton) ?? ctx.findSkeletonById(init.skeleton)?.rig ?? null;\r\n if (!skeleton || !Array.isArray(init.chains) || init.chains.length === 0) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const chains = init.chains.map((chain) => deserializeSpringChain(ctx, chain));\r\n if (chains.some((chain) => !chain)) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const options = deserializeSpringSystemOptions(init.options);\r\n let system: SpringSystem | MultiChainSpringSystem;\r\n if (init.systemType === 'single') {\r\n system = new SpringSystem(chains[0]!, options);\r\n } else {\r\n const multiChainSystem = new MultiChainSpringSystem(options);\r\n for (const chain of chains) {\r\n multiChainSystem.addChain(chain!);\r\n }\r\n for (const constraint of init.interChainConstraints ?? []) {\r\n if (\r\n constraint.chainAIndex < 0 ||\r\n constraint.chainBIndex < 0 ||\r\n constraint.chainAIndex >= chains.length ||\r\n constraint.chainBIndex >= chains.length\r\n ) {\r\n continue;\r\n }\r\n multiChainSystem.addInterChainConstraint({ ...constraint, lambda: 0 });\r\n }\r\n system = multiChainSystem;\r\n }\r\n for (const colliderData of init.colliders ?? []) {\r\n const collider = deserializeSpringCollider(ctx, colliderData);\r\n if (collider) {\r\n system.addCollider(collider);\r\n }\r\n }\r\n const modifier = new SpringModifier(system as unknown as SpringSystem, init.weight ?? 1);\r\n modifier.sourceId = init.sourceId ?? '';\r\n modifier.enabled = init.enabled ?? true;\r\n setSpringModifierSkeleton(modifier, skeleton);\r\n return { obj: modifier, loadProps: false };\r\n },\r\n getInitParams(obj: SpringModifier) {\r\n const skeleton = getSpringModifierSkeleton(obj);\r\n const system = obj.springSystem as unknown as SpringSystem | MultiChainSpringSystem;\r\n const isMultiChain = system instanceof MultiChainSpringSystem;\r\n if (!isMultiChain && !(system instanceof SpringSystem)) {\r\n throw new Error('Serialize SpringModifier failed: Unsupported spring system type');\r\n }\r\n const chains = isMultiChain ? system.chains : [system.chain];\r\n const init: SerializedSpringModifier = {\r\n skeleton: skeleton?.persistentId ?? '',\r\n sourceId: obj.sourceId,\r\n systemType: isMultiChain ? 'multi' : 'single',\r\n options: getSpringSystemOptions(system),\r\n chains: chains.map(serializeSpringChain),\r\n ...(isMultiChain\r\n ? {\r\n interChainConstraints: system.interChainConstraints.map(\r\n ({ lambda: _lambda, ...constraint }) => constraint\r\n )\r\n }\r\n : {}),\r\n colliders: system.colliders.map(serializeSpringCollider),\r\n enabled: obj.enabled,\r\n weight: obj.weight\r\n };\r\n return init;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Commands',\r\n description: 'Reset spring modifier state',\r\n type: 'command',\r\n command(this: SpringModifier) {\r\n this.reset();\r\n return false;\r\n },\r\n get(value) {\r\n value.str[0] = 'Reset';\r\n }\r\n },\r\n {\r\n name: 'Enabled',\r\n description: 'Whether this spring modifier is active',\r\n type: 'bool',\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: SpringModifier, value) {\r\n value.bool[0] = this.enabled;\r\n },\r\n set(this: SpringModifier, value) {\r\n this.enabled = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Physics blend weight. 0 uses animation only, 1 uses full spring physics',\r\n type: 'float',\r\n options: {\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: SpringModifier, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: SpringModifier, value) {\r\n this.weight = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getJointDynamicsModifierClass(): SerializableClass {\r\n return {\r\n ctor: JointDynamicsModifier,\r\n name: 'JointDynamicsModifier',\r\n createFunc(ctx: SceneNode, init: SerializedJointDynamicsModifier) {\r\n const skeleton =\r\n ctx.findSkeletonRigById(init.skeleton) ?? ctx.findSkeletonById(init.skeleton)?.rig ?? null;\r\n const systemRoot = findSerializedNode(ctx, init.systemRoot);\r\n if (!skeleton || !systemRoot) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const chains = (init.chains ?? [])\r\n .map((chain): JointDynamicSystemConfig['chainConfig']['chains'][number] | null => {\r\n const start = findSerializedNode(ctx, chain.start);\r\n const end = findSerializedNode(ctx, chain.end);\r\n const startAnchor = findSerializedNode(ctx, chain.startAnchor);\r\n const endAnchor = findSerializedNode(ctx, chain.endAnchor);\r\n return start && end\r\n ? {\r\n start,\r\n end,\r\n startAnchor: startAnchor ?? undefined,\r\n endAnchor: endAnchor ?? undefined,\r\n startAnchorOffset: chain.startAnchorOffset\r\n ? vectorFromArray(chain.startAnchorOffset)\r\n : undefined,\r\n endAnchorOffset: chain.endAnchorOffset ? vectorFromArray(chain.endAnchorOffset) : undefined\r\n }\r\n : null;\r\n })\r\n .filter((chain): chain is JointDynamicSystemConfig['chainConfig']['chains'][number] => {\r\n return !!chain && chain.start.isParentOf(chain.end);\r\n });\r\n if (chains.length === 0) {\r\n return { obj: null, loadProps: false };\r\n }\r\n const serializedColliders = init.colliders ?? [];\r\n const colliders: { r: ColliderR; transform: ReturnType<typeof createTransformAccess> }[] =\r\n serializedColliders.map((item) => {\r\n const transform = findSerializedNode(ctx, item.transform);\r\n return {\r\n r: { ...item.collider },\r\n transform: transform\r\n ? createTransformAccess(transform)\r\n : createTransformAccess(new SceneNode(null), false)\r\n };\r\n });\r\n const serializedGrabbers = init.grabbers ?? [];\r\n const grabbers: {\r\n r: GrabberR;\r\n transform: ReturnType<typeof createTransformAccess>;\r\n enabled: boolean;\r\n }[] = serializedGrabbers.map((item) => {\r\n const transform = findSerializedNode(ctx, item.transform);\r\n return {\r\n r: { ...item.grabber },\r\n transform: transform\r\n ? createTransformAccess(transform)\r\n : createTransformAccess(new SceneNode(null), false),\r\n enabled: item.enabled ?? false\r\n };\r\n });\r\n const flatPlanes = (init.flatPlanes ?? []).map((item) => ({\r\n up: vectorFromArray(item.up, Vector3.axisPY()),\r\n position: vectorFromArray(item.position),\r\n enabled: item.enabled ?? true\r\n }));\r\n const controllerConfig = deserializeControllerConfig(init.controllerConfig);\r\n const config: JointDynamicSystemConfig = {\r\n chainConfig: {\r\n systemRoot,\r\n chains\r\n },\r\n controllerConfig\r\n };\r\n const system = new JointDynamicsSystem(\r\n config,\r\n colliders,\r\n grabbers,\r\n flatPlanes.map((item) => ({ up: item.up, position: item.position }))\r\n );\r\n for (let i = 0; i < serializedColliders.length; i++) {\r\n if (serializedColliders[i]?.enabled === false) {\r\n system.controller.setColliderEnabledAt(i, false);\r\n }\r\n }\r\n for (let i = 0; i < flatPlanes.length; i++) {\r\n if (!flatPlanes[i].enabled) {\r\n system.controller.setFlatPlaneEnabledAt(i, false);\r\n }\r\n }\r\n const modifier = new JointDynamicsModifier(system);\r\n modifier.enabled = init.enabled ?? true;\r\n setJointDynamicsModifierSkeleton(modifier, skeleton);\r\n return { obj: modifier, loadProps: false };\r\n },\r\n getInitParams(obj: JointDynamicsModifier) {\r\n const skeleton = getJointDynamicsModifierSkeleton(obj);\r\n const chainConfig = obj.jointDynamicsSystem.chainConfig;\r\n const controllerConfig = obj.jointDynamicsSystem.controller.getConfig();\r\n const init: SerializedJointDynamicsModifier = {\r\n skeleton: skeleton?.persistentId ?? '',\r\n systemRoot: chainConfig.systemRoot.persistentId,\r\n chains: chainConfig.chains.map((chain) => ({\r\n start: chain.start.persistentId,\r\n end: chain.end.persistentId,\r\n startAnchor: chain.startAnchor?.persistentId,\r\n endAnchor: chain.endAnchor?.persistentId,\r\n startAnchorOffset: chain.startAnchorOffset ? vectorToArray(chain.startAnchorOffset) : undefined,\r\n endAnchorOffset: chain.endAnchorOffset ? vectorToArray(chain.endAnchorOffset) : undefined\r\n })),\r\n controllerConfig: serializeControllerConfig(controllerConfig),\r\n colliders: obj.jointDynamicsSystem.getColliderSnapshots().map((item) => ({\r\n collider: { ...item.r },\r\n transform: item.transform instanceof SceneNode ? item.transform.persistentId : undefined,\r\n enabled: item.enabled\r\n })),\r\n flatPlanes: obj.jointDynamicsSystem.getFlatPlaneSnapshots().map((item) => ({\r\n up: vectorToArray(item.up),\r\n position: vectorToArray(item.position),\r\n enabled: item.enabled\r\n })),\r\n grabbers: obj.jointDynamicsSystem.getGrabberSnapshots().map((item) => ({\r\n grabber: { ...item.r },\r\n transform: item.transform instanceof SceneNode ? item.transform.persistentId : undefined,\r\n enabled: item.enabled\r\n })),\r\n enabled: obj.enabled\r\n };\r\n return init;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Commands',\r\n description: 'Reset joint dynamics modifier state',\r\n type: 'command',\r\n command(this: JointDynamicsModifier) {\r\n this.reset();\r\n return false;\r\n },\r\n get(value) {\r\n value.str[0] = 'Reset';\r\n }\r\n },\r\n {\r\n name: 'Enabled',\r\n description: 'Whether this joint dynamics modifier is active',\r\n type: 'bool',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label: 'Enabled'\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value) {\r\n value.bool[0] = this.enabled;\r\n },\r\n set(this: JointDynamicsModifier, value) {\r\n this.enabled = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Physics blend weight. 0 uses animation only, 1 uses full joint dynamics',\r\n type: 'float',\r\n options: {\r\n ...jointDynamicsPropOptions,\r\n label: 'Weight',\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n isPersistent: isJointDynamicsEditorPropPersistent,\r\n get(this: JointDynamicsModifier, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: JointDynamicsModifier, value) {\r\n this.weight = value.num[0];\r\n }\r\n },\r\n createJointDynamicsVectorProp('Gravity', 'gravity', 'Gravity', 'Global gravity vector'),\r\n createJointDynamicsVectorProp('WindForce', 'windForce', 'Wind Force', 'Global wind force vector'),\r\n createJointDynamicsNumberProp(\r\n 'Relaxation',\r\n 'relaxation',\r\n 'Relaxation',\r\n 'Constraint relaxation iterations per substep',\r\n 'int',\r\n 0\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'SubSteps',\r\n 'subSteps',\r\n 'Sub Steps',\r\n 'Simulation substeps per frame',\r\n 'int',\r\n 1\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'RootSlideLimit',\r\n 'rootSlideLimit',\r\n 'Root Slide Limit',\r\n 'Maximum system-local root movement left as relative physics lag after large root motion. -1 means unlimited',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'RootRotateLimit',\r\n 'rootRotateLimit',\r\n 'Root Rotate Limit',\r\n 'Maximum root rotation angle per substep. -1 means unlimited',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'ConstraintShrinkLimit',\r\n 'constraintShrinkLimit',\r\n 'Shrink Limit',\r\n 'Upper limit for horizontal and shear constraint shrink power',\r\n 'float',\r\n 0\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'StabilizationFrameRate',\r\n 'stabilizationFrameRate',\r\n 'Stabilization FPS',\r\n 'Target frame rate used by stabilization logic',\r\n 'float',\r\n 0\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'FakeWave',\r\n 'isFakeWave',\r\n 'Fake Wave',\r\n 'Enable sinusoidal fake wave on leaf bones'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'FakeWaveSpeed',\r\n 'fakeWaveSpeed',\r\n 'Fake Wave Speed',\r\n 'Global fake wave speed',\r\n 'float'\r\n ),\r\n createJointDynamicsNumberProp(\r\n 'FakeWavePower',\r\n 'fakeWavePower',\r\n 'Fake Wave Power',\r\n 'Global fake wave amplitude multiplier',\r\n 'float'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'EnableSurfaceCollision',\r\n 'enableSurfaceCollision',\r\n 'Surface Collision',\r\n 'Enable triangle-based surface collision'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'EnableBroadPhase',\r\n 'enableBroadPhase',\r\n 'Broad Phase',\r\n 'Enable broad-phase pruning before precise collider tests'\r\n ),\r\n createJointDynamicsBooleanProp(\r\n 'PreserveTwist',\r\n 'preserveTwist',\r\n 'Preserve Twist',\r\n 'Preserve each joint initial local twist after physics simulation'\r\n ),\r\n createJointDynamicsAngleLimitNumberProp(\r\n 'AngleLimit',\r\n 'angleLimit',\r\n 'Angle Limit',\r\n 'Post-simulation parent-child angle limit. -1 disables angle limiting'\r\n ),\r\n createJointDynamicsAngleLimitBooleanProp(\r\n 'AngleLimitFromRoot',\r\n 'limitFromRoot',\r\n 'Limit From Root',\r\n 'Apply angle limiting from the chain root'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'StructuralVertical',\r\n 'structuralVertical',\r\n 'Structural Vertical',\r\n 'Generate parent-child vertical constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'StructuralHorizontal',\r\n 'structuralHorizontal',\r\n 'Structural Horizontal',\r\n 'Generate same-depth horizontal constraints across chains'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'Shear',\r\n 'shear',\r\n 'Shear',\r\n 'Generate diagonal cross-bracing constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'BendingVertical',\r\n 'bendingVertical',\r\n 'Bending Vertical',\r\n 'Generate skip-one vertical bending constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'BendingHorizontal',\r\n 'bendingHorizontal',\r\n 'Bending Horizontal',\r\n 'Generate skip-one horizontal bending constraints'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'Loop',\r\n 'isLoop',\r\n 'Loop',\r\n 'Connect the last root point back to the first root point'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideStructuralVertical',\r\n 'collideStructuralVertical',\r\n 'Collide Structural V',\r\n 'Enable per-constraint collision on structural vertical pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideStructuralHorizontal',\r\n 'collideStructuralHorizontal',\r\n 'Collide Structural H',\r\n 'Enable per-constraint collision on structural horizontal pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'CollideShear',\r\n 'collideShear',\r\n 'Collide Shear',\r\n 'Enable per-constraint collision on shear pairs'\r\n ),\r\n createJointDynamicsConstraintOptionProp(\r\n 'ConstraintSurfaceCollision',\r\n 'enableSurfaceCollision',\r\n 'Constraint Surface Collision',\r\n 'Enable surface collision in constraint generation'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'MassScale',\r\n 'massScale',\r\n 'Mass Scale',\r\n 'Depth curve that scales point mass'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'GravityScale',\r\n 'gravityScale',\r\n 'Gravity Scale',\r\n 'Depth curve that scales gravity strength'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'WindForceScale',\r\n 'windForceScale',\r\n 'Wind Force Scale',\r\n 'Depth curve that scales wind force'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Resistance',\r\n 'resistance',\r\n 'Resistance',\r\n 'Depth curve for velocity damping'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Hardness',\r\n 'hardness',\r\n 'Hardness',\r\n 'Depth curve for restore-to-animation stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'Friction',\r\n 'friction',\r\n 'Friction',\r\n 'Depth curve for collision friction'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'PointRadius',\r\n 'pointRadius',\r\n 'Point Radius',\r\n 'Depth curve for collision radius'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'SliderJointLength',\r\n 'sliderJointLength',\r\n 'Slider Joint Length',\r\n 'Depth curve for extra horizontal and shear constraint slack'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'AllShrinkScale',\r\n 'allShrinkScale',\r\n 'All Shrink Scale',\r\n 'Depth curve for global shrink stiffness multiplier'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'AllStretchScale',\r\n 'allStretchScale',\r\n 'All Stretch Scale',\r\n 'Depth curve for global stretch stiffness multiplier'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralShrinkVertical',\r\n 'structuralShrinkVertical',\r\n 'Structural Shrink V',\r\n 'Depth curve for structural vertical shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralStretchVertical',\r\n 'structuralStretchVertical',\r\n 'Structural Stretch V',\r\n 'Depth curve for structural vertical stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralShrinkHorizontal',\r\n 'structuralShrinkHorizontal',\r\n 'Structural Shrink H',\r\n 'Depth curve for structural horizontal shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'StructuralStretchHorizontal',\r\n 'structuralStretchHorizontal',\r\n 'Structural Stretch H',\r\n 'Depth curve for structural horizontal stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'ShearShrink',\r\n 'shearShrink',\r\n 'Shear Shrink',\r\n 'Depth curve for shear shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'ShearStretch',\r\n 'shearStretch',\r\n 'Shear Stretch',\r\n 'Depth curve for shear stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingShrinkVertical',\r\n 'bendingShrinkVertical',\r\n 'Bending Shrink V',\r\n 'Depth curve for bending vertical shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingStretchVertical',\r\n 'bendingStretchVertical',\r\n 'Bending Stretch V',\r\n 'Depth curve for bending vertical stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingShrinkHorizontal',\r\n 'bendingShrinkHorizontal',\r\n 'Bending Shrink H',\r\n 'Depth curve for bending horizontal shrink stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'BendingStretchHorizontal',\r\n 'bendingStretchHorizontal',\r\n 'Bending Stretch H',\r\n 'Depth curve for bending horizontal stretch stiffness'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'FakeWavePowerCurve',\r\n 'fakeWavePower',\r\n 'Fake Wave Power Curve',\r\n 'Depth curve for fake wave amplitude'\r\n ),\r\n createJointDynamicsCurveProp(\r\n 'FakeWaveFreq',\r\n 'fakeWaveFreq',\r\n 'Fake Wave Freq',\r\n 'Depth curve for fake wave frequency offset'\r\n )\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getInterpolatorClass(): SerializableClass {\r\n return {\r\n ctor: Interpolator,\r\n name: 'Interpolator',\r\n createFunc(\r\n ctx,\r\n init: { mode: InterpolationMode; target: InterpolationTarget; inputs: string; outputs: string }\r\n ) {\r\n const inputs = init.inputs\r\n ? new Float32Array(base64ToUint8Array(init.inputs).buffer)\r\n : new Float32Array();\r\n const outputs = init.outputs\r\n ? new Float32Array(base64ToUint8Array(init.outputs).buffer)\r\n : new Float32Array();\r\n return { obj: new Interpolator(init.mode, init.target, inputs, outputs) };\r\n },\r\n getInitParams(obj: Interpolator) {\r\n const inputs: Float32Array<ArrayBuffer> =\r\n obj.inputs instanceof Float32Array\r\n ? obj.inputs\r\n : obj.inputs\r\n ? new Float32Array(obj.inputs)\r\n : new Float32Array();\r\n const outputs: Float32Array<ArrayBuffer> =\r\n obj.outputs instanceof Float32Array\r\n ? obj.outputs\r\n : obj.outputs\r\n ? new Float32Array(obj.outputs)\r\n : new Float32Array();\r\n return {\r\n mode: obj.mode,\r\n target: obj.target,\r\n inputs: uint8ArrayToBase64(new Uint8Array(inputs.buffer, inputs.byteOffset, inputs.byteLength)),\r\n outputs: uint8ArrayToBase64(new Uint8Array(outputs.buffer, outputs.byteOffset, outputs.byteLength))\r\n };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Mode',\r\n description:\r\n 'What kind of method does this interpolator use to interpolate data, possible value is `step` | `linear` | `cubicspline` | `cubicspline-natural`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.mode;\r\n }\r\n },\r\n {\r\n name: 'Target',\r\n description:\r\n 'What type of data this interpolator handles, possible value is `number` | `vec2` | `vec3` | `vec4 | `quat`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.target ?? '';\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getInterpolatorScalarClass(): SerializableClass {\r\n return {\r\n ctor: InterpolatorScalar,\r\n name: 'InterpolatorScalar',\r\n createFunc(ctx, init: { mode: InterpolationMode; inputs: string; outputs: string }) {\r\n const inputs = init.inputs\r\n ? new Float32Array(base64ToUint8Array(init.inputs).buffer)\r\n : new Float32Array();\r\n const outputs = init.outputs\r\n ? new Float32Array(base64ToUint8Array(init.outputs).buffer)\r\n : new Float32Array();\r\n return { obj: new Interpolator(init.mode, 'number', inputs, outputs) };\r\n },\r\n getInitParams(obj: InterpolatorScalar) {\r\n const inputs: Float32Array<ArrayBuffer> =\r\n obj.inputs instanceof Float32Array\r\n ? obj.inputs\r\n : obj.inputs\r\n ? new Float32Array(obj.inputs)\r\n : new Float32Array();\r\n const outputs: Float32Array<ArrayBuffer> =\r\n obj.outputs instanceof Float32Array\r\n ? obj.outputs\r\n : obj.outputs\r\n ? new Float32Array(obj.outputs)\r\n : new Float32Array();\r\n return {\r\n mode: obj.mode,\r\n inputs: uint8ArrayToBase64(new Uint8Array(inputs.buffer, inputs.byteOffset, inputs.byteLength)),\r\n outputs: uint8ArrayToBase64(new Uint8Array(outputs.buffer, outputs.byteOffset, outputs.byteLength))\r\n };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Mode',\r\n description:\r\n 'What kind of method does this interpolator use to interpolate data, possible value is `step` | `linear` | `cubicspline` | `cubicspline-natural`',\r\n type: 'string',\r\n get(this: Interpolator, value) {\r\n value.str[0] = this.mode;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getMorphTrackClass(): SerializableClass {\r\n return {\r\n ctor: MorphTargetTrack,\r\n name: 'MorphTargetTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: MorphTargetTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'DefaultWeights',\r\n description: 'Default weights for this track',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n value.object[0] = this.defaultWeights ?? null;\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n this.defaultWeights = (value.object[0] as number[]) ?? null;\r\n }\r\n },\r\n {\r\n name: 'OriginBoundingBox',\r\n description: 'Original bounding box',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n if (!this.originBoundingBox) {\r\n value.object[0] = null;\r\n } else {\r\n const arr = [...this.originBoundingBox.minPoint, ...this.originBoundingBox.maxPoint];\r\n value.object[0] = arr;\r\n }\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n if (!value.object[0]) {\r\n this.originBoundingBox = null;\r\n } else {\r\n const bbox = new AABB();\r\n const values = value.object[0] as number[];\r\n bbox.minPoint.setXYZ(values[0], values[1], values[2]);\r\n bbox.maxPoint.setXYZ(values[3], values[4], values[5]);\r\n this.originBoundingBox = bbox;\r\n }\r\n }\r\n },\r\n {\r\n name: 'BoundingBox',\r\n description: 'Bounding box when this track in action',\r\n type: 'object',\r\n get(this: MorphTargetTrack, value) {\r\n if (!this.boundingBox) {\r\n value.object[0] = null;\r\n } else {\r\n const arr: number[] = [];\r\n for (const box of this.boundingBox) {\r\n arr.push(...box.minPoint);\r\n arr.push(...box.maxPoint);\r\n }\r\n value.object[0] = arr;\r\n }\r\n },\r\n set(this: MorphTargetTrack, value) {\r\n if (!value.object[0]) {\r\n this.boundingBox = null;\r\n } else {\r\n const arr: BoundingBox[] = [];\r\n const values = value.object[0] as number[];\r\n for (let i = 0; i < values.length / 6; i++) {\r\n arr.push(\r\n new BoundingBox(\r\n new Vector3(values[i * 6 + 0], values[i * 6 + 1], values[i * 6 + 2]),\r\n new Vector3(values[i * 6 + 3], values[i * 6 + 4], values[i * 6 + 5])\r\n )\r\n );\r\n }\r\n this.boundingBox = arr;\r\n }\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getMorphTargetGroupTrackClass(): SerializableClass {\r\n return {\r\n ctor: MorphTargetGroupTrack,\r\n name: 'MorphTargetGroupTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'GroupName',\r\n description: 'Morph target group controlled by this track',\r\n type: 'string',\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.groupName;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.groupName = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Scalar interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: MorphTargetGroupTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: MorphTargetGroupTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nfunction encodeFloat32Array(values: Float32Array) {\r\n return uint8ArrayToBase64(new Uint8Array(values.buffer, values.byteOffset, values.byteLength));\r\n}\r\n\r\nfunction decodeFloat32Array(value: string) {\r\n return new Float32Array(base64ToUint8Array(value).buffer);\r\n}\r\n\r\nexport function getFixedGeometryCacheTrackClass(): SerializableClass {\r\n return {\r\n ctor: FixedGeometryCacheTrack,\r\n name: 'FixedGeometryCacheTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Times',\r\n description: 'Keyframe timestamps for this geometry cache track',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.times);\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.times = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'Frames',\r\n description: 'Serialized geometry cache frames for this track',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: FixedGeometryCacheTrack, value) {\r\n value.object[0] = this.frames.map((frame) => ({\r\n positions: encodeFloat32Array(frame.positions),\r\n normals: frame.normals ? encodeFloat32Array(frame.normals) : '',\r\n bounds: [\r\n frame.boundingBox.minPoint.x,\r\n frame.boundingBox.minPoint.y,\r\n frame.boundingBox.minPoint.z,\r\n frame.boundingBox.maxPoint.x,\r\n frame.boundingBox.maxPoint.y,\r\n frame.boundingBox.maxPoint.z\r\n ]\r\n }));\r\n },\r\n set(this: FixedGeometryCacheTrack, value) {\r\n this.frames = (\r\n (value.object[0] as Array<{\r\n positions: string;\r\n normals: string;\r\n bounds: number[];\r\n }>) ?? []\r\n ).map((frame) => ({\r\n positions: decodeFloat32Array(frame.positions),\r\n normals: frame.normals ? decodeFloat32Array(frame.normals) : null,\r\n boundingBox: new BoundingBox(\r\n new Vector3(frame.bounds[0], frame.bounds[1], frame.bounds[2]),\r\n new Vector3(frame.bounds[3], frame.bounds[4], frame.bounds[5])\r\n )\r\n }));\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getPCAGeometryCacheTrackClass(): SerializableClass {\r\n return {\r\n ctor: PCAGeometryCacheTrack,\r\n name: 'PCAGeometryCacheTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Times',\r\n description: 'Keyframe timestamps for this PCA geometry cache track',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.times);\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.times = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'Bounds',\r\n description: 'Per-frame bounding boxes for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.bounds;\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.bounds = (value.object[0] as [number, number, number, number, number, number][]) ?? [];\r\n }\r\n },\r\n {\r\n name: 'PositionReference',\r\n description: 'Reference position data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.positionReference ? encodeFloat32Array(this.positionReference) : '';\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionReference = value.str[0] ? decodeFloat32Array(value.str[0]) : null;\r\n }\r\n },\r\n {\r\n name: 'PositionMean',\r\n description: 'Mean position data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = encodeFloat32Array(this.positionMean);\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionMean = value.str[0] ? decodeFloat32Array(value.str[0]) : new Float32Array();\r\n }\r\n },\r\n {\r\n name: 'PositionBases',\r\n description: 'Principal position basis vectors for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.positionBases.map((item) => encodeFloat32Array(item));\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionBases = ((value.object[0] as string[]) ?? []).map((item) =>\r\n decodeFloat32Array(item)\r\n );\r\n }\r\n },\r\n {\r\n name: 'PositionCoefficients',\r\n description: 'Per-frame position coefficient data for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.positionCoefficients.map((item) => encodeFloat32Array(item));\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.positionCoefficients = ((value.object[0] as string[]) ?? []).map((item) =>\r\n decodeFloat32Array(item)\r\n );\r\n }\r\n },\r\n {\r\n name: 'NormalMean',\r\n description: 'Mean normal data for the PCA geometry cache',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.str[0] = this.normalMean ? encodeFloat32Array(this.normalMean) : '';\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalMean = value.str[0] ? decodeFloat32Array(value.str[0]) : null;\r\n }\r\n },\r\n {\r\n name: 'NormalBases',\r\n description: 'Principal normal basis vectors for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.normalBases?.map((item) => encodeFloat32Array(item)) ?? [];\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalBases =\r\n ((value.object[0] as string[]) ?? []).map((item) => decodeFloat32Array(item)) ?? null;\r\n }\r\n },\r\n {\r\n name: 'NormalCoefficients',\r\n description: 'Per-frame normal coefficient data for the PCA geometry cache',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: PCAGeometryCacheTrack, value) {\r\n value.object[0] = this.normalCoefficients?.map((item) => encodeFloat32Array(item)) ?? [];\r\n },\r\n set(this: PCAGeometryCacheTrack, value) {\r\n this.normalCoefficients =\r\n ((value.object[0] as string[]) ?? []).map((item) => decodeFloat32Array(item)) ?? null;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeRotationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeRotationTrack,\r\n name: 'NodeRotationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeEulerRotationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeEulerRotationTrack,\r\n name: 'NodeEulerRotationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeEulerRotationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeEulerRotationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeTranslationTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeTranslationTrack,\r\n name: 'NodeTranslationTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeTranslationTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeTranslationTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getNodeScaleTrackClass(): SerializableClass {\r\n return {\r\n ctor: NodeScaleTrack,\r\n name: 'NodeScaleTrack',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'Interpolator',\r\n description: 'Interpolator object for this track',\r\n type: 'object',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.object[0] = this.interpolator;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: NodeScaleTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: NodeScaleTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getPropTrackClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: PropertyTrack,\r\n name: 'PropertyTrack',\r\n createFunc(ctx, init) {\r\n return { obj: new PropertyTrack(manager.getPropertyByName(init)) };\r\n },\r\n getInitParams(obj: PropertyTrack) {\r\n return manager.getPropertyName(obj.getProp());\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TrackName',\r\n description: 'The track name',\r\n type: 'string',\r\n options: {\r\n label: 'Name'\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.name = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackTarget',\r\n description: 'Target object this track applys to',\r\n type: 'string',\r\n options: {\r\n label: 'Target'\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = this.target;\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.target = value.str[0];\r\n }\r\n },\r\n {\r\n name: 'TrackProp',\r\n description: 'Which property of the target object does this track handle',\r\n type: 'string',\r\n get(this: PropertyTrack, value) {\r\n value.str[0] = manager.getPropertyName(this.getProp()) ?? '';\r\n }\r\n },\r\n {\r\n name: 'TrackData',\r\n description: 'Interpolator data used by this property track',\r\n type: 'object_array',\r\n options: {\r\n objectTypes: [Interpolator]\r\n },\r\n isHidden(this: PropertyTrack, index: number) {\r\n return index >= 0;\r\n },\r\n get(this: PropertyTrack, value) {\r\n value.object = this.interpolatorAlpha\r\n ? [this.interpolator, this.interpolatorAlpha]\r\n : [this.interpolator];\r\n },\r\n set(this: PropertyTrack, value) {\r\n this.interpolator = value.object[0] as Interpolator;\r\n this.interpolatorAlpha = value.object[1] as Interpolator;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkeletonClass(): SerializableClass {\r\n return {\r\n ctor: Skeleton,\r\n name: 'Skeleton',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n joints: string[];\r\n rootJoint?: string;\r\n rootBindPose?: string;\r\n inverseBindMatrices: string;\r\n bindPoseMatrices: string;\r\n bindPose: string;\r\n retargetPose?: string;\r\n id: string;\r\n }\r\n ) {\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = init.joints\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .map((node) => {\r\n node!.jointTypeT = 'static';\r\n node!.jointTypeS = 'static';\r\n node!.jointTypeR = 'static';\r\n return node;\r\n });\r\n const rootJoint = init.rootJoint ? prefabNode.findNodeById(init.rootJoint) : null;\r\n const inverseBindMatricesArray = new Float32Array(base64ToUint8Array(init.inverseBindMatrices).buffer);\r\n const bindPoseArray = new Float32Array(\r\n base64ToUint8Array(init.bindPose ?? init.bindPoseMatrices).buffer\r\n );\r\n const rootBindPose = init.rootBindPose ? decodeSkeletonBindPose(init.rootBindPose) : undefined;\r\n const retargetPose = init.retargetPose\r\n ? decodeSkeletonPose(init.retargetPose, joints.length)\r\n : undefined;\r\n const inverseBindMatrices: Matrix4x4[] = [];\r\n const bindPose: { rotation: Quaternion; scale: Vector3; position: Vector3 }[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n inverseBindMatrices.push(new Matrix4x4(inverseBindMatricesArray.slice(i * 16, i * 16 + 16)));\r\n if (!init.bindPose) {\r\n const matrix = new Matrix4x4(bindPoseArray.slice(i * 16, i * 16 + 16));\r\n const trs = {\r\n position: new Vector3(),\r\n rotation: new Quaternion(),\r\n scale: new Vector3()\r\n };\r\n matrix.decompose(trs.scale, trs.rotation, trs.position);\r\n bindPose.push(trs);\r\n } else {\r\n bindPose.push({\r\n position: new Vector3(\r\n bindPoseArray[i * 10 + 0],\r\n bindPoseArray[i * 10 + 1],\r\n bindPoseArray[i * 10 + 2]\r\n ),\r\n rotation: new Quaternion(\r\n bindPoseArray[i * 10 + 3],\r\n bindPoseArray[i * 10 + 4],\r\n bindPoseArray[i * 10 + 5],\r\n bindPoseArray[i * 10 + 6]\r\n ),\r\n scale: new Vector3(\r\n bindPoseArray[i * 10 + 7],\r\n bindPoseArray[i * 10 + 8],\r\n bindPoseArray[i * 10 + 9]\r\n )\r\n });\r\n }\r\n }\r\n let rig =\r\n (ctx.animationSet.rigs\r\n .map((ref) => ref.get())\r\n .find(\r\n (item) =>\r\n !!item &&\r\n SkeletonRig.getRigKey(item.joints, item.rootJoint) === SkeletonRig.getRigKey(joints, rootJoint)\r\n ) as SkeletonRig | undefined) ?? null;\r\n if (!rig) {\r\n rig = new SkeletonRig(joints, bindPose, {\r\n rootJoint,\r\n rootBindPose,\r\n retargetPose\r\n });\r\n ctx.animationSet.rigs.push(new DRef(rig));\r\n }\r\n const skeleton = new SkinBinding(rig, inverseBindMatrices, joints);\r\n skeleton.persistentId = init.id;\r\n return {\r\n obj: skeleton,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: Skeleton) {\r\n const inverseBindMatrices: number[] = obj.inverseBindMatrices\r\n .map((v) => [...v])\r\n .reduce((a, b) => [...a, ...b], []);\r\n const bindPose: number[] = obj.bindPose\r\n .map((v) => [...v.position, ...v.rotation, ...v.scale])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n rootJoint: obj.rig.rootJoint?.persistentId ?? '',\r\n rootBindPose: encodeSkeletonBindPose(obj.rig.rootBindPose),\r\n inverseBindMatrices: uint8ArrayToBase64(new Uint8Array(new Float32Array(inverseBindMatrices).buffer)),\r\n bindPose: uint8ArrayToBase64(new Uint8Array(new Float32Array(bindPose).buffer)),\r\n retargetPose: obj.rig.hasRetargetPose ? encodeSkeletonPose(obj.rig.retargetPose) : undefined,\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkeletonRigClass(): SerializableClass {\r\n return {\r\n ctor: SkeletonRig,\r\n name: 'SkeletonRig',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n joints: string[];\r\n rootJoint?: string;\r\n rootBindPose?: string;\r\n bindPoseMatrices: string;\r\n bindPose: string;\r\n retargetPose?: string;\r\n id: string;\r\n }\r\n ) {\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = init.joints\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .map((node) => {\r\n node!.jointTypeT = 'static';\r\n node!.jointTypeS = 'static';\r\n node!.jointTypeR = 'static';\r\n return node;\r\n });\r\n const rootJoint = init.rootJoint ? prefabNode.findNodeById(init.rootJoint) : null;\r\n const rootBindPose = init.rootBindPose ? decodeSkeletonBindPose(init.rootBindPose) : undefined;\r\n const bindPoseArray = new Float32Array(\r\n base64ToUint8Array(init.bindPose ?? init.bindPoseMatrices).buffer\r\n );\r\n const bindPose: { rotation: Quaternion; scale: Vector3; position: Vector3 }[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n if (!init.bindPose) {\r\n const matrix = new Matrix4x4(bindPoseArray.slice(i * 16, i * 16 + 16));\r\n const trs = {\r\n position: new Vector3(),\r\n rotation: new Quaternion(),\r\n scale: new Vector3()\r\n };\r\n matrix.decompose(trs.scale, trs.rotation, trs.position);\r\n bindPose.push(trs);\r\n } else {\r\n bindPose.push({\r\n position: new Vector3(\r\n bindPoseArray[i * 10 + 0],\r\n bindPoseArray[i * 10 + 1],\r\n bindPoseArray[i * 10 + 2]\r\n ),\r\n rotation: new Quaternion(\r\n bindPoseArray[i * 10 + 3],\r\n bindPoseArray[i * 10 + 4],\r\n bindPoseArray[i * 10 + 5],\r\n bindPoseArray[i * 10 + 6]\r\n ),\r\n scale: new Vector3(\r\n bindPoseArray[i * 10 + 7],\r\n bindPoseArray[i * 10 + 8],\r\n bindPoseArray[i * 10 + 9]\r\n )\r\n });\r\n }\r\n }\r\n const retargetPose = init.retargetPose\r\n ? decodeSkeletonPose(init.retargetPose, joints.length)\r\n : undefined;\r\n const rig = new SkeletonRig(joints, bindPose, {\r\n rootJoint,\r\n rootBindPose,\r\n retargetPose\r\n });\r\n rig.persistentId = init.id;\r\n return {\r\n obj: rig,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: SkeletonRig) {\r\n const bindPose: number[] = obj.bindPose\r\n .map((v) => [...v.position, ...v.rotation, ...v.scale])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n rootJoint: obj.rootJoint?.persistentId ?? '',\r\n rootBindPose: encodeSkeletonBindPose(obj.rootBindPose),\r\n bindPose: uint8ArrayToBase64(new Uint8Array(new Float32Array(bindPose).buffer)),\r\n retargetPose: obj.hasRetargetPose ? encodeSkeletonPose(obj.retargetPose) : undefined,\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSkinBindingClass(): SerializableClass {\r\n return {\r\n ctor: SkinBinding,\r\n name: 'SkinBinding',\r\n createFunc(\r\n ctx: SceneNode,\r\n init: {\r\n rig: string;\r\n joints?: string[];\r\n inverseBindMatrices: string;\r\n id: string;\r\n }\r\n ) {\r\n const rig = ctx.findSkeletonRigById(init.rig);\r\n if (!rig) {\r\n throw new Error(`Deserialize SkinBinding failed: skeleton rig '${init.rig}' not found`);\r\n }\r\n const prefabNode = ctx.getPrefabNode() ?? ctx;\r\n const joints = (init.joints ?? rig.joints.map((joint) => joint.persistentId))\r\n .map((id) => prefabNode.findNodeById(id)!)\r\n .filter((node): node is SceneNode => !!node);\r\n const inverseBindMatricesArray = new Float32Array(base64ToUint8Array(init.inverseBindMatrices).buffer);\r\n const inverseBindMatrices: Matrix4x4[] = [];\r\n for (let i = 0; i < joints.length; i++) {\r\n inverseBindMatrices.push(new Matrix4x4(inverseBindMatricesArray.slice(i * 16, i * 16 + 16)));\r\n }\r\n const binding = new SkinBinding(rig, inverseBindMatrices, joints);\r\n binding.persistentId = init.id;\r\n return {\r\n obj: binding,\r\n loadProps: false\r\n };\r\n },\r\n getInitParams(obj: SkinBinding) {\r\n const inverseBindMatrices: number[] = obj.inverseBindMatrices\r\n .map((v) => [...v])\r\n .reduce((a, b) => [...a, ...b], []);\r\n return {\r\n rig: obj.rig.persistentId,\r\n joints: obj.joints.map((joint) => joint.persistentId),\r\n inverseBindMatrices: uint8ArrayToBase64(new Uint8Array(new Float32Array(inverseBindMatrices).buffer)),\r\n id: obj.persistentId\r\n };\r\n },\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getAnimationClass(manager: ResourceManager): SerializableClass {\r\n return {\r\n ctor: AnimationClip,\r\n name: 'AnimationClip',\r\n createFunc(ctx: SceneNode, init: string) {\r\n return { obj: ctx.animationSet.get(init) ?? ctx.animationSet.createAnimation(init, false) };\r\n },\r\n getInitParams(obj: AnimationClip) {\r\n return obj.name;\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Name',\r\n description: 'The animation name, unique in `AnimationSet`',\r\n type: 'string',\r\n get(this: AnimationClip, value) {\r\n value.str[0] = this.name;\r\n }\r\n },\r\n {\r\n name: 'Duration',\r\n description: 'Time duration of the animation in seconds',\r\n type: 'float',\r\n default: 1,\r\n get(this: AnimationClip, value) {\r\n value.num[0] = this.timeDuration;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.timeDuration = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Weight',\r\n description: 'Weight of this animation, used in animation blending',\r\n type: 'float',\r\n default: 1,\r\n get(this: AnimationClip, value) {\r\n value.num[0] = this.weight;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.weight = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'AutoPlay',\r\n description: 'Whether this animation should automatically start playing when model is loaded',\r\n type: 'bool',\r\n default: false,\r\n get(this: AnimationClip, value) {\r\n value.bool[0] = this.autoPlay;\r\n },\r\n set(this: AnimationClip, value) {\r\n this.autoPlay = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Rigs',\r\n description: 'Rig references used by this animation clip',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object[0] = [...this.skeletons];\r\n },\r\n set(this: AnimationClip, value) {\r\n if (!this.skeletons) {\r\n this.skeletons = new Set();\r\n }\r\n for (const val of (value.object[0] as string[]) ?? []) {\r\n this.skeletons.add(val);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Skeletons',\r\n description: 'Legacy skeleton references used by this animation clip',\r\n type: 'object',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object[0] = [];\r\n },\r\n set(this: AnimationClip, value) {\r\n if (!this.skeletons) {\r\n this.skeletons = new Set();\r\n }\r\n for (const val of (value.object[0] as string[]) ?? []) {\r\n this.skeletons.add(val);\r\n }\r\n }\r\n },\r\n {\r\n name: 'Tracks',\r\n description: 'Animation tracks of this animation clip',\r\n type: 'object_array',\r\n options: {\r\n edit: 'proptrack',\r\n objectTypes: [PropertyTrack]\r\n },\r\n readonly: true,\r\n isHidden(this: AnimationClip, index: number, obj: unknown) {\r\n if (index < 0) {\r\n return false;\r\n } else {\r\n return !(obj instanceof PropertyTrack);\r\n }\r\n },\r\n get(this: AnimationClip, value) {\r\n value.object = [];\r\n for (const tracks of this.tracks) {\r\n for (const track of tracks[1]) {\r\n if (tracks[0] instanceof SceneNode && !(track instanceof PropertyTrack)) {\r\n track.target = tracks[0].persistentId;\r\n }\r\n }\r\n //value.object.push(...tracks[1].filter((track) => track instanceof PropertyTrack));\r\n value.object.push(...tracks[1]);\r\n }\r\n },\r\n set(this: AnimationClip, value) {\r\n for (const track of value.object) {\r\n if (track instanceof PropertyTrack) {\r\n const targetObj = manager.findAnimationTarget(this._animationSet.model, track);\r\n if (targetObj) {\r\n this.addTrack(targetObj, track);\r\n }\r\n } else if (track instanceof AnimationTrack) {\r\n const prefabNode = this._animationSet.model.getPrefabNode() ?? this._animationSet.model;\r\n const node = prefabNode.findNodeById(track.target);\r\n if (node) {\r\n this.addTrack(node, track);\r\n } else {\r\n console.error(`No node found with id = ${track.target}`);\r\n }\r\n }\r\n }\r\n },\r\n delete(this: AnimationClip, index) {\r\n const trackList: AnimationTrack[] = [];\r\n for (const tracks of this.tracks) {\r\n trackList.push(...tracks[1].filter((track) => track instanceof PropertyTrack));\r\n }\r\n const trackToRemove = trackList[index];\r\n if (trackToRemove) {\r\n this.deleteTrack(trackToRemove);\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["jointDynamicsModifierSkeletons","WeakMap","springModifierSkeletons","encodeSkeletonBindPose","bindPose","uint8ArrayToBase64","Uint8Array","Float32Array","position","rotation","scale","buffer","decodeSkeletonBindPose","encoded","data","base64ToUint8Array","Vector3","Quaternion","encodeSkeletonPose","pose","values","flatMap","transform","decodeSkeletonPose","jointCount","length","Error","i","push","vectorToArray","value","x","y","z","vectorFromArray","defaultValue","zero","Array","isArray","clone","quaternionToArray","w","quaternionFromArray","undefined","serializeSpringChain","chain","particles","map","particle","node","persistentId","anchorNode","anchorOffset","originalPosition","originalRotation","mass","damping","fixed","constraints","constraint","particleA","particleB","restLength","stiffness","compliance","deserializeSpringChain","ctx","SpringChain","item","findSerializedNode","worldMatrix","m03","m13","m23","decompose","addParticle","createSpringParticle","addConstraint","createSpringConstraint","serializeSpringCollider","collider","type","sphere","enabled","center","radius","localRadius","localRadiusScaleRef","localOffset","capsule","start","end","localStartOffset","localEndOffset","plane","point","normal","localPointOffset","localNormal","restoreSpringColliderRadiusScale","createdScaleRef","Number","isFinite","Math","abs","inferredScaleRef","deserializeSpringCollider","createSphereCollider","createCapsuleCollider","createPlaneCollider","getSpringSystemOptions","system","iterations","gravity","wind","enableInertialForces","centrifugalScale","coriolisScale","solver","poseFollow","poseFollowRoot","poseFollowTip","poseFollowExponent","maxPoseOffset","maxPoseOffsetRoot","maxPoseOffsetTip","deserializeSpringSystemOptions","options","serializeScalarCurve","mode","inputs","outputs","deserializeScalarCurve","InterpolatorScalar","serializeControllerConfig","curves","key","curve","Object","entries","windForce","relaxation","subSteps","rootSlideLimit","rootRotateLimit","constraintShrinkLimit","blendRatio","stabilizationFrameRate","isFakeWave","fakeWaveSpeed","fakeWavePower","enableSurfaceCollision","enableBroadPhase","preserveTwist","angleLimitConfig","constraintOptions","deserializeControllerConfig","fromEntries","config","keys","root","id","prefabNode","getPrefabNode","findNodeById","scene","setJointDynamicsModifierSkeleton","modifier","skeleton","set","getJointDynamicsModifierSkeleton","get","setSpringModifierSkeleton","getSpringModifierSkeleton","jointDynamicsPropOptions","group","isJointDynamicsEditorPropPersistent","updateJointDynamicsConfig","jointDynamicsSystem","controller","updateConfig","createJointDynamicsNumberProp","name","label","description","minValue","isPersistent","num","getConfig","createJointDynamicsBooleanProp","bool","createJointDynamicsVectorProp","v","createJointDynamicsAngleLimitNumberProp","createJointDynamicsAngleLimitBooleanProp","createJointDynamicsConstraintOptionProp","createJointDynamicsCurveProp","evaluate","val","constant","getSpringModifierClass","ctor","SpringModifier","createFunc","init","findSkeletonRigById","findSkeletonById","rig","chains","obj","loadProps","some","systemType","SpringSystem","multiChainSystem","MultiChainSpringSystem","addChain","interChainConstraints","chainAIndex","chainBIndex","addInterChainConstraint","lambda","colliderData","colliders","addCollider","weight","sourceId","getInitParams","springSystem","isMultiChain","_lambda","getProps","defineProps","command","reset","str","maxValue","getJointDynamicsModifierClass","JointDynamicsModifier","systemRoot","startAnchor","endAnchor","startAnchorOffset","endAnchorOffset","filter","isParentOf","serializedColliders","r","createTransformAccess","SceneNode","serializedGrabbers","grabbers","grabber","flatPlanes","up","axisPY","controllerConfig","chainConfig","JointDynamicsSystem","setColliderEnabledAt","setFlatPlaneEnabledAt","getColliderSnapshots","getFlatPlaneSnapshots","getGrabberSnapshots","getInterpolatorClass","Interpolator","target","byteOffset","byteLength","getInterpolatorScalarClass","getMorphTrackClass","MorphTargetTrack","objectTypes","isHidden","object","interpolator","defaultWeights","originBoundingBox","arr","minPoint","maxPoint","bbox","AABB","setXYZ","boundingBox","box","BoundingBox","getMorphTargetGroupTrackClass","MorphTargetGroupTrack","groupName","encodeFloat32Array","decodeFloat32Array","getFixedGeometryCacheTrackClass","FixedGeometryCacheTrack","times","frames","frame","positions","normals","bounds","getPCAGeometryCacheTrackClass","PCAGeometryCacheTrack","positionReference","positionMean","positionBases","positionCoefficients","normalMean","normalBases","normalCoefficients","getNodeRotationTrackClass","NodeRotationTrack","getNodeEulerRotationTrackClass","NodeEulerRotationTrack","getNodeTranslationTrackClass","NodeTranslationTrack","getNodeScaleTrackClass","NodeScaleTrack","getPropTrackClass","manager","PropertyTrack","getPropertyByName","getPropertyName","getProp","index","interpolatorAlpha","getSkeletonClass","Skeleton","joints","jointTypeT","jointTypeS","jointTypeR","rootJoint","inverseBindMatricesArray","inverseBindMatrices","bindPoseArray","bindPoseMatrices","rootBindPose","retargetPose","Matrix4x4","slice","matrix","trs","animationSet","rigs","ref","find","SkeletonRig","getRigKey","DRef","SkinBinding","reduce","a","b","joint","hasRetargetPose","getSkeletonRigClass","getSkinBindingClass","binding","getAnimationClass","AnimationClip","createAnimation","default","timeDuration","autoPlay","skeletons","Set","add","edit","readonly","tracks","track","targetObj","findAnimationTarget","_animationSet","model","addTrack","AnimationTrack","console","error","delete","trackList","trackToRemove","deleteTrack"],"mappings":"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"}