@zephyr3d/editor 0.3.4 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/assets/{index-DzQzWsCG.js → index-ySiLtSxz.js} +3 -3
  2. package/dist/assistant/zephyr-types-index.json +14217 -7895
  3. package/dist/index.html +1 -1
  4. package/dist/modules/zephyr3d_backend-webgl.js.map +1 -1
  5. package/dist/modules/zephyr3d_backend-webgpu.js +13 -12
  6. package/dist/modules/zephyr3d_backend-webgpu.js.map +1 -1
  7. package/dist/modules/zephyr3d_device.js +15 -15
  8. package/dist/modules/zephyr3d_device.js.map +1 -1
  9. package/dist/modules/zephyr3d_imgui.js.map +1 -1
  10. package/dist/modules/zephyr3d_scene.js +3276 -1089
  11. package/dist/modules/zephyr3d_scene.js.map +1 -1
  12. package/dist/vendor/zephyr3d/backend-webgl/dist/index.js.map +1 -1
  13. package/dist/vendor/zephyr3d/backend-webgpu/dist/capabilities_webgpu.js +7 -6
  14. package/dist/vendor/zephyr3d/backend-webgpu/dist/capabilities_webgpu.js.map +1 -1
  15. package/dist/vendor/zephyr3d/backend-webgpu/dist/index.js.map +1 -1
  16. package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js +6 -6
  17. package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js.map +1 -1
  18. package/dist/vendor/zephyr3d/device/dist/device.js +15 -15
  19. package/dist/vendor/zephyr3d/device/dist/device.js.map +1 -1
  20. package/dist/vendor/zephyr3d/imgui/dist/index.d.ts +7 -0
  21. package/dist/vendor/zephyr3d/imgui/dist/index.js.map +1 -1
  22. package/dist/vendor/zephyr3d/scene/dist/animation/animation.js +87 -0
  23. package/dist/vendor/zephyr3d/scene/dist/animation/animation.js.map +1 -1
  24. package/dist/vendor/zephyr3d/scene/dist/animation/animationcontroller.js +503 -0
  25. package/dist/vendor/zephyr3d/scene/dist/animation/animationcontroller.js.map +1 -0
  26. package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js +686 -63
  27. package/dist/vendor/zephyr3d/scene/dist/animation/animationset.js.map +1 -1
  28. package/dist/vendor/zephyr3d/scene/dist/animation/animationtimeline.js +974 -0
  29. package/dist/vendor/zephyr3d/scene/dist/animation/animationtimeline.js.map +1 -0
  30. package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics_modifier.js +19 -19
  31. package/dist/vendor/zephyr3d/scene/dist/animation/joint_dynamics_modifier.js.map +1 -1
  32. package/dist/vendor/zephyr3d/scene/dist/app/engine.js +131 -131
  33. package/dist/vendor/zephyr3d/scene/dist/app/engine.js.map +1 -1
  34. package/dist/vendor/zephyr3d/scene/dist/app/scriptregistry.js +17 -12
  35. package/dist/vendor/zephyr3d/scene/dist/app/scriptregistry.js.map +1 -1
  36. package/dist/vendor/zephyr3d/scene/dist/asset/model.js +2 -1
  37. package/dist/vendor/zephyr3d/scene/dist/asset/model.js.map +1 -1
  38. package/dist/vendor/zephyr3d/scene/dist/avatar/wardrobe.js +13 -13
  39. package/dist/vendor/zephyr3d/scene/dist/avatar/wardrobe.js.map +1 -1
  40. package/dist/vendor/zephyr3d/scene/dist/camera/camera.js +201 -201
  41. package/dist/vendor/zephyr3d/scene/dist/camera/camera.js.map +1 -1
  42. package/dist/vendor/zephyr3d/scene/dist/index.d.ts +1271 -10
  43. package/dist/vendor/zephyr3d/scene/dist/index.js +3 -1
  44. package/dist/vendor/zephyr3d/scene/dist/index.js.map +1 -1
  45. package/dist/vendor/zephyr3d/scene/dist/material/mixins/lightmodel/pbrmetallicroughness.js +5 -5
  46. package/dist/vendor/zephyr3d/scene/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  47. package/dist/vendor/zephyr3d/scene/dist/material/mixins/lit.js +7 -3
  48. package/dist/vendor/zephyr3d/scene/dist/material/mixins/lit.js.map +1 -1
  49. package/dist/vendor/zephyr3d/scene/dist/material/mtoon.js +4 -4
  50. package/dist/vendor/zephyr3d/scene/dist/material/mtoon.js.map +1 -1
  51. package/dist/vendor/zephyr3d/scene/dist/material/pbrblueprint.js +11 -11
  52. package/dist/vendor/zephyr3d/scene/dist/material/pbrblueprint.js.map +1 -1
  53. package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js +284 -284
  54. package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js.map +1 -1
  55. package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js +9 -9
  56. package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js.map +1 -1
  57. package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js +5 -5
  58. package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js.map +1 -1
  59. package/dist/vendor/zephyr3d/scene/dist/render/renderer.js +7 -7
  60. package/dist/vendor/zephyr3d/scene/dist/render/renderer.js.map +1 -1
  61. package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js +1 -1
  62. package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js.map +1 -1
  63. package/dist/vendor/zephyr3d/scene/dist/shadow/shadow_region.js +45 -45
  64. package/dist/vendor/zephyr3d/scene/dist/shadow/shadow_region.js.map +1 -1
  65. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js +276 -275
  66. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js.map +1 -1
  67. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js +4 -3
  68. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js.map +1 -1
  69. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js +1 -1
  70. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js.map +1 -1
  71. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/mesh.js.map +1 -1
  72. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js +3 -2
  73. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js.map +1 -1
  74. package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/sprite.js.map +1 -1
  75. package/package.json +8 -8
@@ -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 createTransformAccess,\r\n PCAGeometryCacheTrack,\r\n MorphTargetTrack,\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 { 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: { start: string; end: string }[];\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\nconst jointDynamicsModifierSkeletons = new WeakMap<JointDynamicsModifier, 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 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\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 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) => {\r\n const start = findSerializedNode(ctx, chain.start);\r\n const end = findSerializedNode(ctx, chain.end);\r\n return start && end ? { start, end } : null;\r\n })\r\n .filter((chain): chain is { start: SceneNode; end: SceneNode } => {\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 })),\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 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\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","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","serializeScalarCurve","mode","inputs","outputs","deserializeScalarCurve","InterpolatorScalar","serializeControllerConfig","curves","key","curve","Object","entries","gravity","windForce","relaxation","subSteps","rootSlideLimit","rootRotateLimit","constraintShrinkLimit","blendRatio","stabilizationFrameRate","isFakeWave","fakeWaveSpeed","fakeWavePower","enableSurfaceCollision","enableBroadPhase","preserveTwist","angleLimitConfig","constraintOptions","deserializeControllerConfig","undefined","fromEntries","map","config","keys","length","findSerializedNode","root","id","prefabNode","getPrefabNode","findNodeById","scene","setJointDynamicsModifierSkeleton","modifier","skeleton","set","getJointDynamicsModifierSkeleton","get","jointDynamicsPropOptions","group","isJointDynamicsEditorPropPersistent","updateJointDynamicsConfig","jointDynamicsSystem","controller","updateConfig","createJointDynamicsNumberProp","name","label","description","type","minValue","options","isPersistent","num","getConfig","createJointDynamicsBooleanProp","bool","createJointDynamicsVectorProp","v","createJointDynamicsAngleLimitNumberProp","createJointDynamicsAngleLimitBooleanProp","createJointDynamicsConstraintOptionProp","createJointDynamicsCurveProp","evaluate","val","constant","getJointDynamicsModifierClass","ctor","JointDynamicsModifier","createFunc","ctx","init","findSkeletonRigById","findSkeletonById","rig","systemRoot","obj","loadProps","chains","chain","start","end","filter","isParentOf","serializedColliders","colliders","item","transform","r","collider","createTransformAccess","SceneNode","serializedGrabbers","grabbers","grabber","enabled","flatPlanes","up","axisPY","controllerConfig","chainConfig","system","JointDynamicsSystem","i","setColliderEnabledAt","setFlatPlaneEnabledAt","getInitParams","persistentId","getColliderSnapshots","getFlatPlaneSnapshots","getGrabberSnapshots","getProps","defineProps","command","reset","str","maxValue","weight","getInterpolatorClass","Interpolator","target","byteOffset","byteLength","getMorphTrackClass","MorphTargetTrack","objectTypes","isHidden","object","interpolator","defaultWeights","originBoundingBox","arr","minPoint","maxPoint","bbox","AABB","values","setXYZ","boundingBox","box","push","BoundingBox","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","node","jointTypeT","jointTypeS","jointTypeR","rootJoint","inverseBindMatricesArray","inverseBindMatrices","bindPoseArray","bindPoseMatrices","rootBindPose","Matrix4x4","slice","matrix","trs","decompose","animationSet","rigs","ref","find","SkeletonRig","getRigKey","DRef","SkinBinding","reduce","a","b","joint","getSkeletonRigClass","getSkinBindingClass","Error","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 createTransformAccess,\r\n PCAGeometryCacheTrack,\r\n MorphTargetTrack,\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 { 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: { start: string; end: string }[];\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\nconst jointDynamicsModifierSkeletons = new WeakMap<JointDynamicsModifier, 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 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\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 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) => {\r\n const start = findSerializedNode(ctx, chain.start);\r\n const end = findSerializedNode(ctx, chain.end);\r\n return start && end ? { start, end } : null;\r\n })\r\n .filter((chain): chain is { start: SceneNode; end: SceneNode } => {\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 })),\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 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\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","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","serializeScalarCurve","mode","inputs","outputs","deserializeScalarCurve","InterpolatorScalar","serializeControllerConfig","curves","key","curve","Object","entries","gravity","windForce","relaxation","subSteps","rootSlideLimit","rootRotateLimit","constraintShrinkLimit","blendRatio","stabilizationFrameRate","isFakeWave","fakeWaveSpeed","fakeWavePower","enableSurfaceCollision","enableBroadPhase","preserveTwist","angleLimitConfig","constraintOptions","deserializeControllerConfig","undefined","fromEntries","map","config","keys","length","findSerializedNode","root","id","prefabNode","getPrefabNode","findNodeById","scene","setJointDynamicsModifierSkeleton","modifier","skeleton","set","getJointDynamicsModifierSkeleton","get","jointDynamicsPropOptions","group","isJointDynamicsEditorPropPersistent","updateJointDynamicsConfig","jointDynamicsSystem","controller","updateConfig","createJointDynamicsNumberProp","name","label","description","type","minValue","options","isPersistent","num","getConfig","createJointDynamicsBooleanProp","bool","createJointDynamicsVectorProp","v","createJointDynamicsAngleLimitNumberProp","createJointDynamicsAngleLimitBooleanProp","createJointDynamicsConstraintOptionProp","createJointDynamicsCurveProp","evaluate","val","constant","getJointDynamicsModifierClass","ctor","JointDynamicsModifier","createFunc","ctx","init","findSkeletonRigById","findSkeletonById","rig","systemRoot","obj","loadProps","chains","chain","start","end","filter","isParentOf","serializedColliders","colliders","item","transform","r","collider","createTransformAccess","SceneNode","serializedGrabbers","grabbers","grabber","enabled","flatPlanes","up","axisPY","controllerConfig","chainConfig","system","JointDynamicsSystem","i","setColliderEnabledAt","setFlatPlaneEnabledAt","getInitParams","persistentId","getColliderSnapshots","getFlatPlaneSnapshots","getGrabberSnapshots","getProps","defineProps","command","reset","str","maxValue","weight","getInterpolatorClass","Interpolator","target","byteOffset","byteLength","getMorphTrackClass","MorphTargetTrack","objectTypes","isHidden","object","interpolator","defaultWeights","originBoundingBox","arr","minPoint","maxPoint","bbox","AABB","values","setXYZ","boundingBox","box","push","BoundingBox","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","node","jointTypeT","jointTypeS","jointTypeR","rootJoint","inverseBindMatricesArray","inverseBindMatrices","bindPoseArray","bindPoseMatrices","rootBindPose","Matrix4x4","slice","matrix","trs","decompose","animationSet","rigs","ref","find","SkeletonRig","getRigKey","DRef","SkinBinding","reduce","a","b","joint","getSkeletonRigClass","getSkinBindingClass","Error","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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"}