python-cad-tools 0.1.20__tar.gz → 0.1.22__tar.gz

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 (299) hide show
  1. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/CHANGELOG.md +82 -0
  2. {python_cad_tools-0.1.20/src/python_cad_tools.egg-info → python_cad_tools-0.1.22}/PKG-INFO +1 -1
  3. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/neutral-model.md +1 -1
  4. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/asset-manifest.json +1 -0
  5. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/animationGroup-y0vxJTHi.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/animationGroup-CDFhMkj8.js +1 -1
  6. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/bakedVertexAnimation-BBtOjYgD.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/bakedVertexAnimation-lRAWMLmk.js +1 -1
  7. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/basisTextureLoader-CXr9VbfR.js +1 -0
  8. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/brdfTextureTools-BYIrp83q.js +2 -0
  9. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/bumpFragment-DA8EdzWp.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/bumpFragment-U-JYUZJP.js +1 -1
  10. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/bumpVertex-C-Tz5-on.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/bumpVertex-DMfODpIf.js +1 -1
  11. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/bumpVertexDeclaration-DcJYzNbJ.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/bumpVertexDeclaration-eZJJ7UIG.js +1 -1
  12. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/clipPlaneFragment-TSEtEMNd.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/clipPlaneFragment-CrO6RH6v.js +1 -1
  13. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/clipPlaneVertex-uZlnoaiC.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/clipPlaneVertex-D8CXY_Z-.js +1 -1
  14. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/cubemapToSphericalPolynomial-CbpdsBi-.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/cubemapToSphericalPolynomial-QQE52u8s.js +1 -1
  15. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/dds-hjWkkmiN.js +1 -0
  16. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/dds.pure-GxPY_zfe.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/dds.pure-DvgIxMtr.js +1 -1
  17. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/ddsTextureLoader-CksmWoIY.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/ddsTextureLoader-B7Ask8UU.js +1 -1
  18. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/default.fragment-CLdN55aJ.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/default.fragment-CwRnonRI.js +1 -1
  19. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/default.vertex-hpVkU2OZ.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/default.vertex-BWP1cxod.js +1 -1
  20. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/defaultUboDeclaration-B-2Y6yF1.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/defaultUboDeclaration-BeCP171I.js +1 -1
  21. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/envTextureLoader-BJ6o68xV.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/envTextureLoader-D1kbn9JS.js +1 -1
  22. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/exrTextureLoader-EGHqxheE.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/exrTextureLoader-ZMDNwx5E.js +1 -1
  23. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphApplyForceBlock-DAS01LnC.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphApplyForceBlock-BP7cadOI.js +1 -1
  24. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphApplyImpulseBlock-CMzcV63U.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphApplyImpulseBlock-BLe6bPjR.js +1 -1
  25. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphArrayIndexBlock-DofkR5wi.js +1 -0
  26. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphBezierCurveEasingBlock-BuVUi2RL.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphBezierCurveEasingBlock-CzNGuQZB.js +1 -1
  27. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphBinaryOperationBlock-CVGmsw8x.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphBinaryOperationBlock-DhmUOJoC.js +1 -1
  28. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphBranchBlock-BfIcR38b.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphBranchBlock-BeAErwet.js +1 -1
  29. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphCachedOperationBlock-BItwxOg_.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphCachedOperationBlock-DA2ewMOQ.js +1 -1
  30. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphCancelDelayBlock-DabMn7mT.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphCancelDelayBlock-wws6LUtv.js +1 -1
  31. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphCodeExecutionBlock-B9nrso5H.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphCodeExecutionBlock-CsMWlni7.js +1 -1
  32. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphConditionalDataBlock-BTfkFqJa.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphConditionalDataBlock-Cz68jOOW.js +1 -1
  33. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphConsoleLogBlock-ZKRRrx3V.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphConsoleLogBlock-C4Rc29L3.js +1 -1
  34. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphConstantBlock-Ck59ln9r.js +1 -0
  35. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphContextBlock-aaa4bUjB.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphContextBlock-zPkgu487.js +1 -1
  36. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphCounterBlock-DHQ9YaXX.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphCounterBlock-BgHZG8VJ.js +1 -1
  37. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphDataSwitchBlock-CCWQezeZ.js +1 -0
  38. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphDebounceBlock-CHLipwBM.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphDebounceBlock-BdJ8AFTq.js +1 -1
  39. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphDebugBlock-B7BE97Pj.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphDebugBlock-DPzVHo27.js +1 -1
  40. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphDoNBlock-Cd2QmmLL.js +1 -0
  41. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphEasingBlock-B4WasDy3.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphEasingBlock-BzcbFamI.js +1 -1
  42. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphFlipFlopBlock-DrbNVT2u.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphFlipFlopBlock-CkKtmQol.js +1 -1
  43. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphForLoopBlock-D1b2s7Tc.js +1 -0
  44. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphFunctionReferenceBlock-CnlGraT6.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphFunctionReferenceBlock-C2lHWRWV.js +1 -1
  45. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphGLTFDataProvider-D_p9Vc3n.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphGLTFDataProvider-nZRx2Aji.js +1 -1
  46. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphGetAngularVelocityBlock-CoO6JHmy.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphGetAngularVelocityBlock-DD_IxJ1q.js +1 -1
  47. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphGetAssetBlock-DrhbzMoK.js +1 -0
  48. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphGetLinearVelocityBlock-BGL2RtAb.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphGetLinearVelocityBlock-CElUve7u.js +1 -1
  49. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphGetPhysicsMassPropertiesBlock-CxIjatfx.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphGetPhysicsMassPropertiesBlock-Dv4LbmFt.js +1 -1
  50. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphGetPropertyBlock-DT-QXVu_.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphGetPropertyBlock-CfhW-pl9.js +1 -1
  51. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphGetSoundVolumeBlock-C4LKSI5R.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphGetSoundVolumeBlock-6eZEtIro.js +1 -1
  52. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphGetVariableBlock-DIlaVi8M.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphGetVariableBlock-Cemv6Z_3.js +1 -1
  53. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphIndexOfBlock-Zl_Q_ffa.js +1 -0
  54. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphInterpolationBlock-tG1kO4s_.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphInterpolationBlock-B2GAUuoa.js +1 -1
  55. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphIsKeyPressedBlock-D6ExxkWF.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphIsKeyPressedBlock-CExCYeTX.js +1 -1
  56. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphIsSoundPlayingBlock-vPEvDIRc.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphIsSoundPlayingBlock-37f4HG19.js +1 -1
  57. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphJsonPointerParserBlock-D1ARDrGb.js +1 -0
  58. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphKeyDownEventBlock-BABAmIeL.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphKeyDownEventBlock-UmzkExCq.js +1 -1
  59. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphKeyUpEventBlock-BSUoekRK.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphKeyUpEventBlock-B_S_RWJg.js +1 -1
  60. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphKeyboardEventBlock-CZDsT79F.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphKeyboardEventBlock-By9QDPRn.js +1 -1
  61. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphMathBlocks-DJ4PPI_n.js +1 -0
  62. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphMathCombineExtractBlocks-CbwJeujD.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphMathCombineExtractBlocks-PIVRCxQ5.js +1 -1
  63. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphMatrixMathBlocks-CJ0nrwFc.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphMatrixMathBlocks-DWsy3lWl.js +1 -1
  64. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphMeshPickEventBlock-CYCR7C7B.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphMeshPickEventBlock-DQG8jBus.js +1 -1
  65. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphMultiGateBlock-CgGrcrkp.js +1 -0
  66. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphPauseAnimationBlock-C1yfh7U4.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphPauseAnimationBlock-DzPqsXtC.js +1 -1
  67. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphPauseSoundBlock-B8T3Qxmk.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphPauseSoundBlock-BLaN6Zof.js +1 -1
  68. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphPhysicsCollisionEventBlock-B4vsEIEQ.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphPhysicsCollisionEventBlock-B1MXH6Xx.js +1 -1
  69. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphPlayAnimationBlock-BuU8u7bh.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphPlayAnimationBlock-u8UoUFBS.js +1 -1
  70. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphPlaySoundBlock-OsFJerGp.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphPlaySoundBlock-CCuWF6t6.js +1 -1
  71. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphPointerDownEventBlock-B4myfwzY.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphPointerDownEventBlock-C_VdS7ZI.js +1 -1
  72. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphPointerMoveEventBlock-C7kNYXVC.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphPointerMoveEventBlock-C9Wmd_kC.js +1 -1
  73. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOutEventBlock-BwL1k9K3.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOutEventBlock-E4s9ytS0.js +1 -1
  74. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOverEventBlock-D7uPUz3m.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOverEventBlock-6wlxRwzu.js +1 -1
  75. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphPointerUpEventBlock-h2k1otta.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphPointerUpEventBlock-CYCU_bQe.js +1 -1
  76. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphReceiveCustomEventBlock-CKsih9DU.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphReceiveCustomEventBlock-BMp0dtqX.js +1 -1
  77. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSceneReadyEventBlock-MoEL2OgG.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSceneReadyEventBlock-b5j9kMub.js +1 -1
  78. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSceneTickEventBlock-DkhjsuEd.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSceneTickEventBlock-JDgpe_bM.js +1 -1
  79. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSendCustomEventBlock-CDJDoId5.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSendCustomEventBlock-D4Cq7wSF.js +1 -1
  80. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSequenceBlock-CKvAcfGB.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSequenceBlock-4OCmzPU0.js +1 -1
  81. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSetAngularVelocityBlock-DUVgv52d.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSetAngularVelocityBlock-CPm9HBds.js +1 -1
  82. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSetDelayBlock-Co1QHpKi.js +1 -0
  83. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSetLinearVelocityBlock-DdFINyIs.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSetLinearVelocityBlock-DlQX-3m_.js +1 -1
  84. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSetPhysicsMotionTypeBlock-B_GSDzn3.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSetPhysicsMotionTypeBlock-S0fzIwXY.js +1 -1
  85. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSetPropertyBlock-5WKrlvaE.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSetPropertyBlock-BXO6FgAf.js +1 -1
  86. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSetSoundVolumeBlock-CdnrYD5B.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSetSoundVolumeBlock-iYVjHlP6.js +1 -1
  87. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSetVariableBlock-DD5gsKis.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSetVariableBlock-Dv_86Ld-.js +1 -1
  88. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSoundEndedEventBlock-fKBoAQlt.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSoundEndedEventBlock-hHVjlRCc.js +1 -1
  89. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphStopAnimationBlock-CDm85_Y9.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphStopAnimationBlock-CzXFLQDL.js +1 -1
  90. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphStopSoundBlock-BY77RYv7.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphStopSoundBlock-CQj9PSxa.js +1 -1
  91. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphSwitchBlock-B4P4fcd_.js +1 -0
  92. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphThrottleBlock-BoV3UuLi.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphThrottleBlock-BVpmr5W_.js +1 -1
  93. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphTransformCoordinatesSystemBlock-BO46AA3F.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphTransformCoordinatesSystemBlock-BUg_1jnW.js +1 -1
  94. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphTypeToTypeBlocks-Dq6a43zx.js +1 -0
  95. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphUnaryOperationBlock-C1RBwiu1.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphUnaryOperationBlock-B0kRjxbn.js +1 -1
  96. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphVectorMathBlocks-CRPoi5bR.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphVectorMathBlocks-CGUQhM1H.js +1 -1
  97. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphWaitAllBlock-TbLchGGN.js +1 -0
  98. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphWhileLoopBlock-C2wNz7MU.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/flowGraphWhileLoopBlock-B89E1pan.js +1 -1
  99. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/fogFragment-DAcG7TCQ.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/fogFragment-CEZ01Cb-.js +1 -1
  100. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/fxaa.fragment-D6zHWDRe.js +55 -0
  101. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/fxaa.vertex-9qLqwtXc.js +8 -0
  102. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-DIlhNWGI.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-CwoUjEBF.js +1 -1
  103. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-DHOD58HS.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-DofYTBog.js +1 -1
  104. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-Csz9k2lc.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-Dmfv1OcY.js +2 -2
  105. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-DyjC4p2I.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-DnM8JWX4.js +1 -1
  106. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-qaQwrhXF.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-CFe1U4w-.js +1 -1
  107. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-BYdix1b9.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-pNqqJ3Pt.js +1 -1
  108. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-C9kJafLO.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-CD6ytF6R.js +1 -1
  109. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-BiVyc4nS.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-z7WQmlVS.js +1 -1
  110. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-BRLme_YW.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-DqFDnVUx.js +1 -1
  111. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-DSPVps-_.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-xIuAwxgi.js +1 -1
  112. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/geometry.fragment-rcQdOa18.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/geometry.fragment-CdtbGKn5.js +2 -2
  113. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/geometry.fragment-BcBx-JUz.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/geometry.fragment-ouETWYrw.js +1 -1
  114. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/geometry.vertex-BTVcDQMd.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/geometry.vertex-CTET7isa.js +1 -1
  115. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/geometry.vertex-BbL_FLfO.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/geometry.vertex-Ci6vKnwQ.js +1 -1
  116. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/glowBlurPostProcess.fragment-BOrEH7qZ.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/glowBlurPostProcess.fragment-DBmFmFYz.js +1 -1
  117. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.fragment-Dw2pELM9.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.fragment-DeHVyUlh.js +1 -1
  118. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.vertex-g4zSgWHl.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.vertex-B5jwSC2y.js +1 -1
  119. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/glowMapMerge.fragment-BRI1RC0h.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/glowMapMerge.fragment-B5hgbtpQ.js +1 -1
  120. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/glowMapMerge.vertex-OYXhsO5y.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/glowMapMerge.vertex-Bf9TlZl3.js +1 -1
  121. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/harmonicsFunctions-B-rFa6Jw.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/harmonicsFunctions--U1yhK0r.js +1 -1
  122. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/helperFunctions-CJuKh7zv.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/helperFunctions-CWukOwfP.js +1 -1
  123. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/iesTextureLoader-hQPlzY89.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/iesTextureLoader-naqnoTfC.js +1 -1
  124. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/index-7lfB9OVT.js +7077 -0
  125. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/index-RTvTYIuN.css +1 -0
  126. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-Bkkqf9Gf.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-BG9p_xI1.js +1 -1
  127. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-gsnhhxsW.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-BTC4BmhS.js +1 -1
  128. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-Di3ETd02.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-ohuQoOtp.js +1 -1
  129. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-CuVvtzKn.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-zkWhPoFP.js +1 -1
  130. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-D8-BThIr.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-Cw7goFuo.js +1 -1
  131. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-lHduxGLy.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-mgP2MdBC.js +1 -1
  132. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/ktxTextureLoader-CsB3T93v.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/ktxTextureLoader-CKh1HFcy.js +1 -1
  133. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/lightFragment-DomeLrOQ.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/lightFragment-Hi7bDXxI.js +1 -1
  134. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/logDepthDeclaration-DdSMU1vE.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/logDepthDeclaration-BVhtASPR.js +1 -1
  135. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/logDepthVertex-CIYc6FKU.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/logDepthVertex-CRX_YigR.js +1 -1
  136. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/mainUVVaryingDeclaration-CinwtRdE.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/mainUVVaryingDeclaration-CjRkg22s.js +1 -1
  137. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/meshUboDeclaration-BHuQNGCy.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/meshUboDeclaration-SzGUa4PP.js +1 -1
  138. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/oitFragment-CG7kMCvU.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/oitFragment-DTTdxCr1.js +1 -1
  139. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-CRlYBc_-.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-Cn5oFPne.js +1 -1
  140. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-Csz9EYJi.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-DHNVxmfS.js +1 -1
  141. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-DWzGweC9.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-CYSQn5S2.js +1 -1
  142. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-D8xRp_pg.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-zzcoCFgT.js +2 -2
  143. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/openpbrMaterial.pure-BVsTXLPP.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/openpbrMaterial.pure-b5708III.js +3 -3
  144. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/openpbrMaterialLoadingAdapter-Cl2qUNz7.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/openpbrMaterialLoadingAdapter-Cfvb8xLz.js +3 -3
  145. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-MOccHJLS.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-C33UOdX_.js +1 -1
  146. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-C3FnopjH.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-xXhvNNXc.js +1 -1
  147. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-DbIcgURU.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-BOG2sM5L.js +1 -1
  148. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-Bd8N4mLs.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-RdCgXXZB.js +1 -1
  149. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/packingFunctions-B-RyPnvp.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/packingFunctions-C1z89rnV.js +1 -1
  150. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/packingFunctions-B_LoQGE_.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/packingFunctions-DG30XIho.js +1 -1
  151. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/pass.fragment-CosRVAJR.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/pass.fragment-C1ha3UYa.js +1 -1
  152. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/passCube.fragment-ByQLKcal.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/passCube.fragment-B9AV7EJg.js +1 -1
  153. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/passCube.fragment-COrMlz4L.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/passCube.fragment-aYgYwZiM.js +1 -1
  154. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/pbr.fragment-Dp9qP0ik.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/pbr.fragment-Bff2NEDt.js +1 -1
  155. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/pbr.vertex-BEhyQo04.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/pbr.vertex-CqPzqzeK.js +1 -1
  156. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/pbrBRDFFunctions-MD5J9kNB.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/pbrBRDFFunctions-DddJocs0.js +1 -1
  157. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/pbrDebug-BMEohefD.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/pbrDebug-B9rPgwfE.js +1 -1
  158. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/pbrIBLFunctions-BNSg1TYL.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/pbrIBLFunctions-X8dsBq6K.js +1 -1
  159. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/pbrMaterial.pure-DwZBA9Dy.js +2 -0
  160. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/pbrMaterialLoadingAdapter-B9wrRf4Y.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/pbrMaterialLoadingAdapter-vR10Vr-Y.js +1 -1
  161. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/pbrUboDeclaration-CaZ5IiXn.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/pbrUboDeclaration-CJwbKPYf.js +1 -1
  162. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/postprocess.vertex-6O8OKxg1.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/postprocess.vertex-Cb6Ywdp6.js +1 -1
  163. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/procedural.vertex-CnLTJ0GC.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/procedural.vertex-Bn9sk4Es.js +1 -1
  164. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/procedural.vertex-CsPpF8ex.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/procedural.vertex-C1RaBmFH.js +1 -1
  165. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/reflectionFunction-FOkl7zGy.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/reflectionFunction-BNJZZ7JO.js +1 -1
  166. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/rgbdDecode.fragment-B3rgzhU8.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/rgbdDecode.fragment-CZ0YDY_n.js +1 -1
  167. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-BQbjknQm.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-BCNu9Cbk.js +1 -1
  168. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-DyCYq3cD.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-BZwLt2Lj.js +1 -1
  169. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/sceneUboDeclaration-qgAWTN28.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/sceneUboDeclaration-BMsSnMNb.js +1 -1
  170. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-pAIEAh33.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-CyDabLCU.js +1 -1
  171. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-DNVQK8Xr.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-DcADq6Q6.js +1 -1
  172. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/tgaTextureLoader-BE-ozdBC.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/tgaTextureLoader-vqDc34pp.js +1 -1
  173. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/vertexColorMixing-B7eY1nal.js → python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/assets/vertexColorMixing-DtVGShSZ.js +1 -1
  174. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/_viewer_static/index.html +2 -2
  175. python_cad_tools-0.1.22/src/python_cad_tools/_viewer_static/sw.js +122 -0
  176. python_cad_tools-0.1.22/src/python_cad_tools/build-info.json +1 -0
  177. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/build.py +27 -0
  178. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/cli.py +10 -0
  179. python_cad_tools-0.1.22/src/python_cad_tools/exporters/custom_view.py +479 -0
  180. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/renders.py +4 -0
  181. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/step.py +45 -1
  182. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/validation.py +60 -0
  183. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22/src/python_cad_tools.egg-info}/PKG-INFO +1 -1
  184. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools.egg-info/SOURCES.txt +170 -168
  185. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools.egg-info/scm_file_list.json +177 -168
  186. python_cad_tools-0.1.22/src/python_cad_tools.egg-info/scm_version.json +8 -0
  187. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/asset-manifest.json +0 -1
  188. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/basisTextureLoader-C0CWWK6C.js +0 -1
  189. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/brdfTextureTools-BK5sbjI4.js +0 -2
  190. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/dds-DTJCjwtR.js +0 -1
  191. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/dumpTools-2Vxp-avt.js +0 -2
  192. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphArrayIndexBlock-BnBgFyIE.js +0 -1
  193. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphConstantBlock-Dynbc9i5.js +0 -1
  194. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphDataSwitchBlock-DCcjQH_2.js +0 -1
  195. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphDoNBlock-cMK6KEZp.js +0 -1
  196. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphForLoopBlock-Bbur2Xn2.js +0 -1
  197. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphGetAssetBlock-JakaK1JL.js +0 -1
  198. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphIndexOfBlock-DYf_o9uE.js +0 -1
  199. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphJsonPointerParserBlock-Af-cdpFu.js +0 -1
  200. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphMathBlocks-UEv4tVyC.js +0 -1
  201. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphMultiGateBlock-tAD2s18w.js +0 -1
  202. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSetDelayBlock-B0LkcVpW.js +0 -1
  203. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphSwitchBlock-BLuZLMgz.js +0 -1
  204. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphTypeToTypeBlocks-_O7ljeb3.js +0 -1
  205. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/flowGraphWaitAllBlock-B4u-Lnoz.js +0 -1
  206. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/index-Bi_hQlRi.css +0 -1
  207. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/index-aS20qDZO.js +0 -7007
  208. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/assets/pbrMaterial.pure-CmT8POVY.js +0 -2
  209. python_cad_tools-0.1.20/src/python_cad_tools/_viewer_static/sw.js +0 -61
  210. python_cad_tools-0.1.20/src/python_cad_tools/build-info.json +0 -1
  211. python_cad_tools-0.1.20/src/python_cad_tools.egg-info/scm_version.json +0 -8
  212. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/.gitattributes +0 -0
  213. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/.githooks/pre-push +0 -0
  214. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/.github/workflows/ci.yml +0 -0
  215. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/.github/workflows/downstream-compatibility.yml +0 -0
  216. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/.github/workflows/release-candidate.yml +0 -0
  217. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/.github/workflows/release.yml +0 -0
  218. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/.gitignore +0 -0
  219. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/.opencode/commands/autocommit.md +0 -0
  220. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/.opencode/tools/specrepo-autocommit.js +0 -0
  221. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/.opencode/tools/specrepo-autocommit.py +0 -0
  222. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/AGENTS.md +0 -0
  223. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/CLAUDE.md +0 -0
  224. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/LICENSE +0 -0
  225. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/MANIFEST.in +0 -0
  226. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/README.md +0 -0
  227. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/build-semantics.md +0 -0
  228. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/drawing-extensions.md +0 -0
  229. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/manifests.md +0 -0
  230. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/project-configuration.md +0 -0
  231. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/public-api.md +0 -0
  232. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/spikes/curved-geometry-ifc-bounds.md +0 -0
  233. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/spikes/format-feasibility.md +0 -0
  234. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/toolchain.md +0 -0
  235. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/two-tier-contract.md +0 -0
  236. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/docs/viewer-delivery.md +0 -0
  237. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/pyproject.toml +0 -0
  238. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/setup.cfg +0 -0
  239. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/__init__.py +0 -0
  240. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/__main__.py +0 -0
  241. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/_locking.py +0 -0
  242. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/_project_loader.py +0 -0
  243. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/_project_state.py +0 -0
  244. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/_scaffold.py +0 -0
  245. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/_transaction.py +0 -0
  246. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/_viewer_static/app.webmanifest +0 -0
  247. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/_viewer_static/assets/hdrTextureLoader-BGQvgh0h.js +0 -0
  248. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/_viewer_static/assets/mesh.vertexData.functions-ayNlGC5K.js +0 -0
  249. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/_viewer_static/favicon.svg +0 -0
  250. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/artifacts.py +0 -0
  251. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/context.py +0 -0
  252. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/determinism.py +0 -0
  253. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/drawings/__init__.py +0 -0
  254. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/drawings/_catalog.py +0 -0
  255. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/drawings/_validation.py +0 -0
  256. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/elements.py +0 -0
  257. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exceptions.py +0 -0
  258. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/__init__.py +0 -0
  259. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/base.py +0 -0
  260. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/drawings/__init__.py +0 -0
  261. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/drawings/annotations.py +0 -0
  262. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/drawings/dxf.py +0 -0
  263. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/drawings/model.py +0 -0
  264. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/drawings/pdf.py +0 -0
  265. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/drawings/primitives.py +0 -0
  266. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/drawings/projection.py +0 -0
  267. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/drawings/svg.py +0 -0
  268. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/glb.py +0 -0
  269. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/ifc.py +0 -0
  270. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/exporters/quantities.py +0 -0
  271. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/geometry.py +0 -0
  272. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/manifests.py +0 -0
  273. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/project_config.py +0 -0
  274. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/py.typed +0 -0
  275. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/recipes.py +0 -0
  276. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/runtime_sync.py +0 -0
  277. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/schemas/build-manifest-1.json +0 -0
  278. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/schemas/design-manifest-1.json +0 -0
  279. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/schemas/download-manifest-2.json +0 -0
  280. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/schemas/drawing-annotations-1.json +0 -0
  281. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/schemas/glb-manifest-1.json +0 -0
  282. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/schemas/ifc-validation-1.json +0 -0
  283. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/schemas/quantities-1.json +0 -0
  284. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/schemas/run-metadata-1.json +0 -0
  285. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/schemas/site-metadata-1.json +0 -0
  286. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/schemas/step-validation-1.json +0 -0
  287. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/site.py +0 -0
  288. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/templates/project/.gitignore +0 -0
  289. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/templates/project/README.md +0 -0
  290. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/templates/project/config.py +0 -0
  291. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/templates/project/drawing_annotations.py +0 -0
  292. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/templates/project/generated/.gitkeep +0 -0
  293. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/templates/project/model.py +0 -0
  294. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/templates/project/pyproject.toml +0 -0
  295. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools/units.py +0 -0
  296. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools.egg-info/dependency_links.txt +0 -0
  297. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools.egg-info/entry_points.txt +0 -0
  298. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools.egg-info/requires.txt +0 -0
  299. {python_cad_tools-0.1.20 → python_cad_tools-0.1.22}/src/python_cad_tools.egg-info/top_level.txt +0 -0
@@ -7,6 +7,88 @@ stable release is published.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Changed
11
+
12
+ - The viewer is canvas-first ([makeitours-website#5](https://github.com/brandon-benge/makeitours-website/issues/5)).
13
+ - The Model / Drawings / Files / Build rail and its side panel are gone.
14
+ A Layers button in the canvas's upper-left opens the model tree as a
15
+ floating drawer on desktop and a nonmodal bottom sheet (40%, up to 65%)
16
+ on phones. It is closed by default, never resizes the canvas or moves
17
+ the camera, and keeps its selection, visibility and expanded groups when
18
+ closed and reopened.
19
+ - Multi-selection: row checkboxes, Shift/Ctrl/Cmd-click in the tree or on
20
+ the canvas, "Select all visible" and "Clear selection". Isolate and Frame
21
+ selected act on the whole selection. Hiding a category no longer clears
22
+ the selection.
23
+ - A Low–High "Navigation sensitivity" slider replaces the Speed dropdown:
24
+ 1× to 100× on a log scale, applied to orbit (square root, so about 10×
25
+ at High), pan and zoom.
26
+ - The persistent "Validated build" badge is gone. The build manifest's
27
+ validation record is read honestly: only an explicit pass with no
28
+ warnings is validated; warnings, failure and a missing or malformed
29
+ record show a discreet canvas indicator that explains the state, lists
30
+ warnings and shows the build details.
31
+
32
+ ### Added
33
+
34
+ - A camera button captures the current view. It freezes the camera and the
35
+ explicit selection (an empty selection asks before using all visible
36
+ elements; selected-but-hidden elements are included or left out by
37
+ choice), renders a PNG of only the included elements without overlays or
38
+ selection glow, and offers a versioned view description
39
+ (`urn:python-cad-tools:schema:view-description:1`: CAD Z-up millimetre
40
+ camera, build hash and sorted stable IDs) whose SHA-256 is the capture
41
+ identity. The build's existing files are listed with honest whole-model
42
+ scopes; none is presented as a drawing of the captured view.
43
+ - STEP products are now named by each element's stable ID (the writer turns
44
+ `.` into `_`), and `exporters.step.step_subset` writes only chosen elements
45
+ from a built STEP file without running project code. Long assembly
46
+ occurrences are joined onto one line so builds stay byte-identical.
47
+ - Captured-view standard sheets include a true section: the included mesh is
48
+ cut at the middle of its depth along Y, with the cut outline on the
49
+ `ANNOTATION_SECTION` layer and the visible edges behind it.
50
+ - When the MakeItOurs app opens a Hosted project's page (it sets
51
+ `window.makeItOursHost.documents` and a `makeItOursDocuments` message
52
+ handler), the capture sheet offers a document request builder: the person
53
+ chooses captured-view outputs, standard drawing formats and views, model
54
+ exports, quantities and which captured elements to keep. The page posts
55
+ only those choices and the narrowed view description to the app for
56
+ review; it holds no credentials. BYOI and standalone pages never show it.
57
+ - `python-cad captured-view --view <view.json> --format png|svg|dxf|pdf
58
+ --destination <dir>` (and `build.captured_view_project`) turns a viewer
59
+ capture into documents of only its elements, without rebuilding.
60
+ - The PNG uses exactly the captured camera (eye, target, up, vertical
61
+ field of view, viewport) with no re-framing.
62
+ - SVG, DXF and PDF are one hidden-line sheet: an orthographic projection
63
+ along the captured direction, drawing each element's outer edges and
64
+ folds over 20° that a depth test shows are visible. Dimensions are
65
+ projected extents in millimetres; an oblique view says they are not true
66
+ lengths, and the sheet says the camera image is not to scale.
67
+ - Unknown or stale element IDs fail with `unknown_selected_element`.
68
+ - `exporters.custom_view.write_custom_view_from_glb` makes the same captured-view
69
+ documents, plus plan, front and side sheets of only the captured elements,
70
+ from a build's own GLB. It reads only the mesh file, so no project code
71
+ runs, and the output is tied to the build it came from. In a local check, a
72
+ browser capture and a PNG made from the site's GLB overlapped at 99.3%.
73
+ - A host app can supply the project's current display name, which replaces
74
+ the build-time model title as plain text: `window.makeItOursHost =
75
+ { displayName }` before load, or `window.makeItOursViewer.setDisplayName()`
76
+ afterwards. Names are trimmed, 1–80 characters, without control characters.
77
+
78
+ ## [0.1.21] - 2026-10-27
79
+
80
+ ### Added
81
+
82
+ - `validate` (and so `build`) now fails a model whose parts were never moved
83
+ into place:
84
+ - `placement-unapplied`: a physical solid whose non-zero
85
+ `Placement.translation_mm` lies outside its own bounds. `Placement`
86
+ records a position and never moves geometry, so the part would export
87
+ where it was built. Build the solid in place instead, for example with
88
+ `box(..., origin=...)` or `shape.moved(Location((x, y, z)))`.
89
+ - `stacked-elements`: three or more physical solids with exactly the same
90
+ bounds, which is almost always parts left at the origin.
91
+
10
92
  ## [0.1.20] - 2026-10-21
11
93
 
12
94
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-cad-tools
3
- Version: 0.1.20
3
+ Version: 0.1.22
4
4
  Summary: Typed, headless Python tooling for CAD/BIM models and artifacts
5
5
  Author: Brandon Benge
6
6
  License: AGPL-3.0-only
@@ -16,7 +16,7 @@ dimensions), and the validator invocation model. See
16
16
  | `category` | `str` | Free-text classification, exported as `ObjectType` in IFC. |
17
17
  | `geometry` | `Any` | A build123d-compatible solid, shell, wire, or edge. Required and opaque — the framework does not restrict how it was built. May be `None` when `recipe` is present; the framework materializes it. |
18
18
  | `geometry_kind` | `"solid" \| "shell" \| "wire" \| "edge" \| "reference"` | Declares the geometry's topological kind. Physical elements must be `"solid"`. |
19
- | `placement` | `Placement` | Translation (mm) and rotation (degrees, XYZ) applied on top of `geometry`'s own coordinates. |
19
+ | `placement` | `Placement` | The element's recorded position: translation (mm) and rotation (degrees, XYZ). It does **not** move `geometry`, which must already be built in place (for example `box(..., origin=...)`); `validate` fails a solid whose non-zero translation lies outside its own bounds (`placement-unapplied`). |
20
20
  | `dimensions` | `Dimensions` | Declared, author-stated extents. Independent of the geometry's actual bounds; exported into `Pset_PythonCadDesign`. |
21
21
  | `material` | `MaterialSpec \| None` | Required for physical elements. Drives IFC material association and quantity mass calculation (`density_kg_m3`). |
22
22
  | `color_rgb` | `Color \| None` | Overrides the material color for this element's rendering/styling. |
@@ -0,0 +1 @@
1
+ {"entries":[{"media_type":"application/manifest+json","path":"app.webmanifest","sha256":"80ad27439df65fb6defc9e30ec2fe782226622e006675e157fac4d145b000661","size":389},{"media_type":"text/javascript; charset=utf-8","path":"assets/animationGroup-CDFhMkj8.js","sha256":"4e514bef8992ad9bebcc72a8e2ecaa8d2d8c3207e0ee8f7672d1cf458d0d05be","size":35489},{"media_type":"text/javascript; charset=utf-8","path":"assets/bakedVertexAnimation-lRAWMLmk.js","sha256":"f7c9cd898ad9ad6a74d2fda0a88164276100edd638e3bbc985d370f080117a88","size":15843},{"media_type":"text/javascript; charset=utf-8","path":"assets/basisTextureLoader-CXr9VbfR.js","sha256":"ced8153cbca782c125884d761a18393cf3cffe2df1f2b5639d4d26af5aab7cd1","size":7960},{"media_type":"text/javascript; charset=utf-8","path":"assets/brdfTextureTools-BYIrp83q.js","sha256":"f452b3dc9c337d163922f418248ea6787b7ed53fdb6869b7a4186bab3523b330","size":60470},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpFragment-U-JYUZJP.js","sha256":"c93a4b84bcccdebc3257c77a9e8f483e925f73cd5d8da1fa1eaae2e0a7174d73","size":8075},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpVertex-DMfODpIf.js","sha256":"31661701633447e7076dac258b98fe6afd458ada592505b43aa63614364a7a1d","size":698},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpVertexDeclaration-eZJJ7UIG.js","sha256":"65004cfc55eb047161601bc3918fc277a98d80f6da9c6726ea3e948f38f01981","size":393},{"media_type":"text/javascript; charset=utf-8","path":"assets/clipPlaneFragment-CrO6RH6v.js","sha256":"e1f3e6a475839bd863f43331191d4fe28ab06065de374ae1bc9f9f2d1efd4b1b","size":1275},{"media_type":"text/javascript; charset=utf-8","path":"assets/clipPlaneVertex-D8CXY_Z-.js","sha256":"61192c92255efe1491774c76fb003e73a0ae111981cbdcc866e1bdf429f29bf7","size":1356},{"media_type":"text/javascript; charset=utf-8","path":"assets/cubemapToSphericalPolynomial-QQE52u8s.js","sha256":"fbf59e0cc6b57cfed3938dd05c25b2c6105fe6b207bcb474216f1c811f6596e6","size":3667},{"media_type":"text/javascript; charset=utf-8","path":"assets/dds-hjWkkmiN.js","sha256":"6e9e8ad259d000c9d58fc16c7269cbef9f0562b326d8fb5d04e4c8b5d3d3ba32","size":161},{"media_type":"text/javascript; charset=utf-8","path":"assets/dds.pure-DvgIxMtr.js","sha256":"e1defa5cad3b81e00c772229daa000ae572c65fade01ac5967738124e18ebe5d","size":7046},{"media_type":"text/javascript; charset=utf-8","path":"assets/ddsTextureLoader-B7Ask8UU.js","sha256":"3ed29fa80f2e1d3390810afa837a24c80343e03bcf7782b6804496b01bdf63de","size":1310},{"media_type":"text/javascript; charset=utf-8","path":"assets/default.fragment-CwRnonRI.js","sha256":"882c0e3e245f252b4d5de513b079e5ecc052a46177cdb801ee80cad7af4e0db0","size":25362},{"media_type":"text/javascript; charset=utf-8","path":"assets/default.vertex-BWP1cxod.js","sha256":"82fc5dd7b6c4e767e229fb31d854960be9cff7034163236d13b72451fc100a9b","size":9451},{"media_type":"text/javascript; charset=utf-8","path":"assets/defaultUboDeclaration-BeCP171I.js","sha256":"23157cdae0927d6433960a031a8a753d2e371e2b1e99908173d906517ec7b473","size":1624},{"media_type":"text/javascript; charset=utf-8","path":"assets/envTextureLoader-D1kbn9JS.js","sha256":"b67342dfdb5dd77efed90a145424e8e9ee6bf8d46520764d2f60f5ac960bc462","size":1649},{"media_type":"text/javascript; charset=utf-8","path":"assets/exrTextureLoader-ZMDNwx5E.js","sha256":"5e6b9a5d27a5204e49f80ce09d5f432c1ca74553a7be508389a79ececbf58ac0","size":14187},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphApplyForceBlock-BP7cadOI.js","sha256":"e18611f5c79fd589df3b837a83953a10862882ed509af87c0b06150c51acb31b","size":675},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphApplyImpulseBlock-BLe6bPjR.js","sha256":"18cc152e13e1b4502575373a205a8c17b4427cdff6b228bfc9a2d006acaaec01","size":691},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphArrayIndexBlock-DofkR5wi.js","sha256":"a41944c7235235ab8d0addb78ba14a71b0a2e907c7d7c79537fc6bcc062e75ee","size":650},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBezierCurveEasingBlock-CzNGuQZB.js","sha256":"e371170d8e7a608fb1229ea300ed88c80d0c978a417d9ea5180eb2558f47610d","size":938},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBinaryOperationBlock-DhmUOJoC.js","sha256":"61427d857e5e6ba4f3ced276cf55c7cea0693f231c6b6b19183197a4d2128db1","size":375},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBranchBlock-BeAErwet.js","sha256":"941760c8a3972ccc30a9b30cefee6eb22b0a26f4f195cc5009106e85b7cc5f8d","size":529},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCachedOperationBlock-DA2ewMOQ.js","sha256":"513e471632c5a63b6a25194721314a005c3fbe0d04ba1ef2008bdb2c26bdea9d","size":688},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCancelDelayBlock-wws6LUtv.js","sha256":"df867f9eb70a4ae563816f386ba3ae8822f64ee838b5479e22f61007d0b05774","size":592},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCodeExecutionBlock-CsMWlni7.js","sha256":"6acd7a019116f1fd4516f6921403ecda0fc9677a62b23fa348772f365246077a","size":470},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConditionalDataBlock-Cz68jOOW.js","sha256":"8c8e99aea95283d004cb9274ef5c7388e96d4d56f3dd76b039c0ae2507a00b95","size":634},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConsoleLogBlock-C4Rc29L3.js","sha256":"7fd3566009a391ab81aea73de1f5d99c83d6318a52e6b8d45f0e357363872971","size":1416},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConstantBlock-Ck59ln9r.js","sha256":"280d08a1eeb7f9fc163e1d2d7cb74bffc6ebcee634f13153a3349909b8e605dc","size":499},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphContextBlock-zPkgu487.js","sha256":"e6e4880f51bb03f73d6ea8caf89ad4bcf2fca8d8333efd2a1dedcbc16bd16b9c","size":540},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCounterBlock-BgHZG8VJ.js","sha256":"4ba466664bc89bc629bb0f9f218ee82085c9f2c8cba0c1a24c044b57cfe11643","size":630},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDataSwitchBlock-CCWQezeZ.js","sha256":"417203800e3191e3251ffd4d76feed2bd33e60b9ee1f4d232cbec8f7771bfa90","size":905},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDebounceBlock-BdJ8AFTq.js","sha256":"b4eb89a2fa3ea06bdf93f58da7fe61656d5de49900af391249f945c33a592a8e","size":768},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDebugBlock-DPzVHo27.js","sha256":"19e1622204c28deb6a3438296f49e2d3b5afc85bad53e1d1c7fe6a7211929daa","size":1450},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDoNBlock-Cd2QmmLL.js","sha256":"1640c922ec015804ab35d63e7656d3c5e71559cb1e94bc6bde437476b4d35d38","size":771},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphEasingBlock-BzcbFamI.js","sha256":"c7ecc4fdbfb81d325f6a9941e9597f4e8de8bf25245368b962198fdc7fc37392","size":1627},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphFlipFlopBlock-CkKtmQol.js","sha256":"893f420e3ceb47613ccb62737c08a49c0a4f0c3e8928ea0d19de4bb2170579e7","size":678},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphForLoopBlock-D1b2s7Tc.js","sha256":"0ac7a774c8106651c078f93b82aa3d4f7a7e99ea3e4edcb4f121080241d92853","size":1109},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphFunctionReferenceBlock-C2lHWRWV.js","sha256":"27aa62b53f8c5003e693559c01ad281a289e2b5797076d29d1673c2e2e2507b6","size":714},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGLTFDataProvider-nZRx2Aji.js","sha256":"16ec2c5c14aaf67837de74bc06a4b292f2c28a1841e1b13c374975b2bc48e2fc","size":418},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetAngularVelocityBlock-DD_IxJ1q.js","sha256":"69c1d18f4fd9455491206eddd3088f65f69defed562af594dbb38712b27c8f27","size":657},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetAssetBlock-DrhbzMoK.js","sha256":"515fa36a34690b8e2690d212c20f8a1eadf9050afbb000772d83c6e562e46b0c","size":639},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetLinearVelocityBlock-CElUve7u.js","sha256":"e72ea4df099cc7cb2e2df17c0a6e7d92e257cccfeea893390a95905f1843f029","size":652},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetPhysicsMassPropertiesBlock-Dv4LbmFt.js","sha256":"5a8e1aab58c1975b329fd0efdd6a2fee5a3bf955d3c960a88528fddbe12459f7","size":801},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetPropertyBlock-CfhW-pl9.js","sha256":"b58166b7fdb86f785e1acca7dc4252ab53717aaab4a411bd253b4583e18bd53c","size":930},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetSoundVolumeBlock-6eZEtIro.js","sha256":"de8b9865445648966932dc5059cba60af53bf4eae3cd9d5ec7fca1b0294021e1","size":485},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetVariableBlock-Cemv6Z_3.js","sha256":"5cd0869c2bc77017eee8b7be47d71c182b24813ced85e0868e8e05ae84d78193","size":545},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIndexOfBlock-Zl_Q_ffa.js","sha256":"e1f5939a7e44ffbaf477087149f5c5fcd40c8ce385afd29386d95729c77d03f1","size":608},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphInterpolationBlock-B2GAUuoa.js","sha256":"83a4bfec3c2e0e76b32e0f0e75adb76203aaf6debd5e611354f065bb34c464b0","size":2089},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIsKeyPressedBlock-CExCYeTX.js","sha256":"588864bfa3bcb1c8568651e1fc780b65624fe0bc5a3b6b9e64c64463f4cb80a0","size":1162},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIsSoundPlayingBlock-37f4HG19.js","sha256":"a671fa628172ddc5f874f61d05a97349523d6880672fdd1727fe7e58b0a53010","size":501},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphJsonPointerParserBlock-D1ARDrGb.js","sha256":"324ca21c002f6f2bfb7d17ccb2346ed57135c4639806b60d7626a1d0b51b3dce","size":3028},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyDownEventBlock-UmzkExCq.js","sha256":"5ddbfff38625b7c881ab3889236892fbd664aa2a5211edd1110529958639972d","size":489},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyUpEventBlock-B_S_RWJg.js","sha256":"fdbd7e4c6a73e85fb1bbd0cc9f2294bc4811687c1834c4a64efd21169911d4cb","size":282},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyboardEventBlock-By9QDPRn.js","sha256":"005f25885e7e4c3fdcdecfefa63de1a701dc9d509bde830a9278ae01c8fda01b","size":962},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMathBlocks-DJ4PPI_n.js","sha256":"a97cb14d5e332c05c90a50fcf7f33821ef6554cdacaefc814978e0c25058e754","size":18512},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMathCombineExtractBlocks-PIVRCxQ5.js","sha256":"e2aed794a10859e60ed440f5c833b25f8c662df529eb2575b83d8568d9b8fc0e","size":7966},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMatrixMathBlocks-DWsy3lWl.js","sha256":"312c0d13c6775ff61852cafba68f18c345cbd6baac1a99f9e86d49c8fcc8c735","size":3570},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMeshPickEventBlock-DQG8jBus.js","sha256":"c567a0c0f71081dd05ede18d6746b48a7d7703203d7f8ca7f77dd957baad5150","size":1394},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMultiGateBlock-CgGrcrkp.js","sha256":"376b5e4bd57b3ea3cc963ae9899640f11f93edbd81e2327ac57cf2ce6608ed66","size":1661},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPauseAnimationBlock-DzPqsXtC.js","sha256":"2e980c60ff445d4aa219f8f12a62d4a2de9fa83ee9924187feb6753386a6ba5a","size":455},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPauseSoundBlock-BLaN6Zof.js","sha256":"eca49b2981acbf8f5d3eead1bcf30f7090f3a623004a54afc53910ce4af62bc7","size":552},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPhysicsCollisionEventBlock-B1MXH6Xx.js","sha256":"c9b4d92496681a0cbbf37ee35675454a0978619a7b525c2e36610c02b6c00d8d","size":1678},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPlayAnimationBlock-u8UoUFBS.js","sha256":"c4b3e6978a02bf4d9f117fa09995333d412c7da24ece2fa1cddb474d9edd0987","size":3736},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPlaySoundBlock-CCuWF6t6.js","sha256":"1ccc02d8a3c968b1318ade1a3d8d98df1f2133e0b9df3ab85d839b3a6729a7f2","size":782},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerDownEventBlock-C_VdS7ZI.js","sha256":"0bc3c5ff692ea9751f85d8294fb0a476f717a92aade9a2aede92b78f3435de67","size":940},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerMoveEventBlock-C9Wmd_kC.js","sha256":"cff7cfea893bfe2dd359415ee10bc0f03f38cb4789d24137fd0e3194034ffbe2","size":958},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerOutEventBlock-E4s9ytS0.js","sha256":"10273374f9592dde3d8d8e7b200af5fa388db6feb974d637923a274f98ff732b","size":831},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerOverEventBlock-6wlxRwzu.js","sha256":"78a746168dd4d27c6fb781675a16871e5667e385f0ab38c34464953ecb2e5bb1","size":842},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerUpEventBlock-CYCU_bQe.js","sha256":"af405ea465540c16ca9f16e8b13efb3d77c330f092dd832593f5bb87d954922d","size":930},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphReceiveCustomEventBlock-BMp0dtqX.js","sha256":"b58a35958fdc073f192724c7ee6174fa4da71f060dd9e49d79e51477bee49fea","size":1530},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSceneReadyEventBlock-b5j9kMub.js","sha256":"b4f755e278593a4c99620d7f9f3709c69ae1b2793f33dfe0f0febb5f75f6ae79","size":452},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSceneTickEventBlock-JDgpe_bM.js","sha256":"e8be2146fdc98b226564f34c70af552939f5e22b5855e1e3f2d7ef0e5124bbc9","size":635},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSendCustomEventBlock-D4Cq7wSF.js","sha256":"4edca829552c12596352abe4ee6cbdb20d5f1540bc3094b64656ca6b0471662e","size":926},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSequenceBlock-4OCmzPU0.js","sha256":"7e65c7bb1b190c8194d7c0182bf49bd7b5aafb3964498da10444f76b72146d7f","size":777},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetAngularVelocityBlock-CPm9HBds.js","sha256":"7ef5c72c1d5aceb8245140966ff5e8615dbb3c06e0eee9e56e65d83e7f55a61c","size":633},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetDelayBlock-Co1QHpKi.js","sha256":"566c4674fa2617fb509b500ba58e126c0a06bed33e9b359ac8fcb9b905b6e977","size":4184},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetLinearVelocityBlock-DlQX-3m_.js","sha256":"327cc813f61f0f6b658b95cc42ae25e63a945a87396f7f44587480d7925b1d99","size":628},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetPhysicsMotionTypeBlock-S0fzIwXY.js","sha256":"58b214676e3425dd96ccee6f604438bb7c665632260708f026a34a967c418afc","size":644},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetPropertyBlock-BXO6FgAf.js","sha256":"d4ae109b657bc84402ed43969158ff688a2f395c78d1a74442995405231ee49e","size":1408},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetSoundVolumeBlock-iYVjHlP6.js","sha256":"29bf3c0c5720c693219af49789060d9ebc8394f83a143b33f5199d561031cd01","size":601},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetVariableBlock-Dv_86Ld-.js","sha256":"6745dd35367001f8003dbed6312fe90012e016de6e95a7520dda829407f28fed","size":1228},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSoundEndedEventBlock-hHVjlRCc.js","sha256":"f004c67ba84beba9d9aaf528660a07f14c6bce2db566ec4489e35e72e37906c7","size":967},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphStopAnimationBlock-CzXFLQDL.js","sha256":"11419d9e69ad9604ffc1a9e26a6da36927409b92b79c0783e04c10d4abfc5c6e","size":1889},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphStopSoundBlock-CQj9PSxa.js","sha256":"9cb7f5087652d734848f8dc96ed57afffe33823a15527e48a3b1dbc105167033","size":496},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSwitchBlock-B4P4fcd_.js","sha256":"8dfc308cdf4a536ed7e366193ea2e3caba47c751cf9da3bac876ad3b34a8fd33","size":1135},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphThrottleBlock-BVpmr5W_.js","sha256":"e33fb6c9834c651bcda9349b59e445c06a6ff4ceb84a6415e5dbd95717cdf64c","size":1363},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphTransformCoordinatesSystemBlock-BUg_1jnW.js","sha256":"8ddce6784779fea39bb1c10e7fc00265c0866c3a536641c7585a95ce45cf48ad","size":968},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphTypeToTypeBlocks-Dq6a43zx.js","sha256":"74588112e1ccebdbf997188c395ea7b836f49fa41d27c398fb6c5f1559f488b0","size":1282},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphUnaryOperationBlock-B0kRjxbn.js","sha256":"1bdc94ba51f5772064a37cf7fb6bb992ff72d49eecdf6b6a15e70f8bec269aef","size":303},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphVectorMathBlocks-CGUQhM1H.js","sha256":"d5f6f1877f00a3c6d27e6d596d0575fdad370112b278c190a661a8db0253d372","size":4726},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphWaitAllBlock-TbLchGGN.js","sha256":"a7ad0bc599d4f565070bc27e7e343182feb5d6010c718ffbca87b7ffffd6d8cc","size":1532},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphWhileLoopBlock-B89E1pan.js","sha256":"04b41d7a911c5ef0e04052ed92a0329d7b416468e0b526cf148a715beb2cbd3b","size":863},{"media_type":"text/javascript; charset=utf-8","path":"assets/fogFragment-CEZ01Cb-.js","sha256":"767440aec9ad6d11a7b156c6f1a4d98cbd9475fc5f0773cc010a63d762ccec52","size":1471},{"media_type":"text/javascript; charset=utf-8","path":"assets/fxaa.fragment-D6zHWDRe.js","sha256":"eb85ee238167e5f2c8490dd70ea128f60641e1351de40bb42af18d710fa4b469","size":6431},{"media_type":"text/javascript; charset=utf-8","path":"assets/fxaa.vertex-9qLqwtXc.js","sha256":"0f0d65277e2d3d027f9faaab0f2371d8b31089b8869275581117ff9ad3b9f69d","size":1438},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting-CwoUjEBF.js","sha256":"4e7e6efc31543ebeace5250877e70855d94d6d86f47e080fd8c6ee63ed23bd2f","size":14395},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting-DofYTBog.js","sha256":"5577eada4dcb3cc1cc5a9fc6b25c91429f0efcbfb986135c1cd04bff3c6bd9d0","size":14631},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.fragment-Dmfv1OcY.js","sha256":"7142825cea91bd59af189c187585ec1da1bd918a8865f65fc647a5248c904ed9","size":1541},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.fragment-DnM8JWX4.js","sha256":"171cf21f93c342f97170e3cf9c2685b78cb61fb412cc5005413596e982b4b214","size":1812},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.vertex-CFe1U4w-.js","sha256":"e1f791fdc7494955f05cf250bec52307d7f656cf5c0b885f9ffb2157d00d05c1","size":4904},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.vertex-pNqqJ3Pt.js","sha256":"1619a7bb6890ed42b69b8cd3a56d89aecb24bdf18de2220a16f41a4d07ea4155","size":3748},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.fragment-CD6ytF6R.js","sha256":"040e031e944e379b3fb63a39378cedf1388d5cffa7f9431cbf797f389cf0c6a5","size":1488},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.fragment-z7WQmlVS.js","sha256":"1b8ec03a85d5e76c29ac67e4cb5372abbde85b7ef1db58c0aabc99ae9f00ff0e","size":1984},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.vertex-DqFDnVUx.js","sha256":"dc6f4ab65e617eeb42ac60334f36e003875aad0da597570605e2f269af709013","size":1802},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.vertex-xIuAwxgi.js","sha256":"9abfba58070513384da2820d4c192166996585e5caa3ec8916189aae6724d3a1","size":2611},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.fragment-CdtbGKn5.js","sha256":"0e25d165bdb6d9b942860d1dcc50a85d76dd53866f7f9fd1fbf22952fa8699c6","size":8171},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.fragment-ouETWYrw.js","sha256":"2e45062780f838bf7b1fffeed0d0b6a9bab5f22ceb9f55d07e896e013d783e23","size":10410},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.vertex-CTET7isa.js","sha256":"ba05abd1843dd462afee9954df0368621f1bb242e3488b585f7ae9ab84b55768","size":9012},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.vertex-Ci6vKnwQ.js","sha256":"c653a900ad8567a85689b6ad2b15858646cba7710d3ce887a451495c2cac77d9","size":7601},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowBlurPostProcess.fragment-DBmFmFYz.js","sha256":"ebdeff3b36c399ba3a40b39880690134017bbd0e498f864431f86d5198b13ee9","size":1409},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapGeneration.fragment-DeHVyUlh.js","sha256":"9462b7228c5064b5ffe2ddcd649447d878e66395a8d3f63647cb00f7d1041535","size":2530},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapGeneration.vertex-B5jwSC2y.js","sha256":"8e1dd4f187827c999ec9f44c7b59b0cdbfd57d83c3554eea926a8d67980913ba","size":2798},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapMerge.fragment-B5hgbtpQ.js","sha256":"640b7efd620f10ccd028cdcd7c3f05df61813192a16f0befc527e8934af8e3a5","size":1059},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapMerge.vertex-Bf9TlZl3.js","sha256":"204c0dc83535584cf082c2754d7b7bae024d24e891f36d3c5aab3240574a3caa","size":545},{"media_type":"text/javascript; charset=utf-8","path":"assets/harmonicsFunctions--U1yhK0r.js","sha256":"4deb6daf9db082bc0f629fb49692b97f8ffaf587b9011e585344eb82d193909a","size":1420},{"media_type":"text/javascript; charset=utf-8","path":"assets/hdrTextureLoader-BGQvgh0h.js","sha256":"3cca41d849d41bf1df7aef34b4f8b5ef30440e716d894158207bd12b97236953","size":2391},{"media_type":"text/javascript; charset=utf-8","path":"assets/helperFunctions-CWukOwfP.js","sha256":"bc26f3d9d90122e0a3a3b1cfc8d16e6be0415aba8457095af6bee580552ca075","size":6488},{"media_type":"text/javascript; charset=utf-8","path":"assets/iesTextureLoader-naqnoTfC.js","sha256":"8205b4d9c146b7eec0d4baf28a8745ded09963d99080263f21ab2163e081e75e","size":2701},{"media_type":"text/javascript; charset=utf-8","path":"assets/index-7lfB9OVT.js","sha256":"e95f53828c73e22a9351839a80dcc69677dc0f850440bb91409fc75acd526e85","size":2344410},{"media_type":"text/css; charset=utf-8","path":"assets/index-RTvTYIuN.css","sha256":"74587916ec65d7f18703a7993974e221b38aa80b32014eae088af35064896d66","size":15519},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.fragment-BG9p_xI1.js","sha256":"7f37f6bf074d03566693b371d8942a4dcae9689fcdd982399faa6e0687228909","size":2851},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.fragment-BTC4BmhS.js","sha256":"79036ab5568c25be9418445fd01795ddd0a3efd2956bdc6bd17eeb3032492a7a","size":2311},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.vertex-ohuQoOtp.js","sha256":"b705d26413b8c26a226c245e34cfce19f39a2981f8f57f521ca2ab45bd7ddda7","size":1064},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.vertex-zkWhPoFP.js","sha256":"2958b30a404e742795ad90ab25f712ca43a1886af16e82afc0342be5b5c09b65","size":899},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlurVaryingDeclaration-Cw7goFuo.js","sha256":"fa3ca52f041e636f973ce15d9c68dfc1f8cdb125ee18f626ed21db29161a81eb","size":211},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlurVaryingDeclaration-mgP2MdBC.js","sha256":"73220ef4c6ed16a77f897b526bcbd7b390bec459661ba581dc61643381b8c109","size":221},{"media_type":"text/javascript; charset=utf-8","path":"assets/ktxTextureLoader-CKh1HFcy.js","sha256":"89a4b7c2f5a8fbbd50fe93488fb1e2178d071e4f327daa5e066eb2e13994345d","size":14979},{"media_type":"text/javascript; charset=utf-8","path":"assets/lightFragment-Hi7bDXxI.js","sha256":"8d4b555b80d00977ab22eb98e7094cd957d10c66df8edf256dc09e78bff32629","size":22605},{"media_type":"text/javascript; charset=utf-8","path":"assets/logDepthDeclaration-BVhtASPR.js","sha256":"33c87078d113c37a08a03b1fb88ed7656843fdbc1d86c87c3fcfff67072ab536","size":280},{"media_type":"text/javascript; charset=utf-8","path":"assets/logDepthVertex-CRX_YigR.js","sha256":"59360eaf152b16d3a6753d982093921680c0b278f6163a2a42f4112b037e89e7","size":826},{"media_type":"text/javascript; charset=utf-8","path":"assets/mainUVVaryingDeclaration-CjRkg22s.js","sha256":"cf68fb714cd0d4d7edfa42daf867d0b0a9ccf226e8f194c2f4b13ab340e67f78","size":238},{"media_type":"text/javascript; charset=utf-8","path":"assets/mesh.vertexData.functions-ayNlGC5K.js","sha256":"109b0c291f78ec6b98053b23c7a9ce01eb8bcee909a0964ce337a68a9b4bc61e","size":960},{"media_type":"text/javascript; charset=utf-8","path":"assets/meshUboDeclaration-SzGUa4PP.js","sha256":"87aac274876ca1ee9a00ec8e993a8f038abcdad7f0521127d8a7bd1dee29e601","size":278},{"media_type":"text/javascript; charset=utf-8","path":"assets/oitFragment-DTTdxCr1.js","sha256":"b70c412b9dc91600302e4f24a4fc946347011f7bc2a47cf62a7a602040f8eab0","size":52427},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.fragment-Cn5oFPne.js","sha256":"6b5dace1801326c9865ec1fd11ca424cb47e036c390743ab327cff48bc6f19c6","size":86994},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.fragment-DHNVxmfS.js","sha256":"2c48f55fac293221ac28ebe5b8dbaa7b7d86ded3a78fd44f669ab48567c7310a","size":89838},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.vertex-CYSQn5S2.js","sha256":"1daac69a89d38b497e760af07acc8903dda2bdac64bc2db3f99c3aca1c365985","size":17340},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.vertex-zzcoCFgT.js","sha256":"12e56d2baff28dc324101b5f43310c963af35da6efd01494411208358fc066bb","size":20214},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrMaterial.pure-b5708III.js","sha256":"c523f3a944c1f70296c08c44022ae52586588208f0619fee572c73062d247a24","size":134156},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrMaterialLoadingAdapter-Cfvb8xLz.js","sha256":"e91989040bc694b358422d7ca47d70fd9b5527f6cab931bab67d12d6b28efc5c","size":33218},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrTransmissionLayerData-C33UOdX_.js","sha256":"b89fb4a90e5ae4121b43f91bbe108c6160b4ce76fe45b36ee9e950360a5adc98","size":17708},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrTransmissionLayerData-xXhvNNXc.js","sha256":"e653aae405dc0580fb27a84b81c95bc55b17ae3ebc136d5dd999b68e7ffb2b05","size":17043},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrUboDeclaration-BOG2sM5L.js","sha256":"35ca6dfb2011fba5100bf52374cb8421fb811973916a22babf0ff4d21c410fc5","size":3791},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrUboDeclaration-RdCgXXZB.js","sha256":"807e667799305845741154ca4f17fbe16e77feefb8f724d3b0f9d94a9cca9787","size":5221},{"media_type":"text/javascript; charset=utf-8","path":"assets/packingFunctions-C1z89rnV.js","sha256":"b06595029a6095ec7f257fbaa461425095e1773388e217126438ff0f300caacb","size":528},{"media_type":"text/javascript; charset=utf-8","path":"assets/packingFunctions-DG30XIho.js","sha256":"030b2a1ad5c24c61797303f7b3b3ffd5b559fe826c20a99fbd37a324e97983ff","size":562},{"media_type":"text/javascript; charset=utf-8","path":"assets/pass.fragment-C1ha3UYa.js","sha256":"34ab5bd5cd72bf612557fc1e9c3341199870fb98f2e463a4d01eb42f966a4237","size":451},{"media_type":"text/javascript; charset=utf-8","path":"assets/passCube.fragment-B9AV7EJg.js","sha256":"379c1eebc2bdfa953d6dbd31ccf6399b361db1b4f994e9d74728b0ad220f3368","size":1131},{"media_type":"text/javascript; charset=utf-8","path":"assets/passCube.fragment-aYgYwZiM.js","sha256":"eaf5451841c1988e9108448bfb0d41ffa45ac4620e1b66e9d9ddd3d4d41c00b1","size":822},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbr.fragment-Bff2NEDt.js","sha256":"330955358884dea66fb566a8ba37ebbdba69c866ce8b358526a822da5521a25d","size":93721},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbr.vertex-CqPzqzeK.js","sha256":"36db90872a70f1191f66366de72210f63344a2266a9946001e32eed9cc056186","size":14451},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrBRDFFunctions-DddJocs0.js","sha256":"9b8e4c874e75ec269d053e7ec71a230a53b5de01745433af108621e0450b920a","size":12760},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrDebug-B9rPgwfE.js","sha256":"c7904368c3d7def45d3e415bcc1d2a5ba787d81243fed7063b3fc6ec9d6e3e01","size":43522},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrIBLFunctions-X8dsBq6K.js","sha256":"86746edf12c2b56c2fd59ea442b3c6181d4517bce203e2f61563c7d5f245a87a","size":2720},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrMaterial.pure-DwZBA9Dy.js","sha256":"b8f9f27013a4e9f509c6d16334f6df84457ee8e86ad1bba2ec9b3890fd003d3a","size":134888},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrMaterialLoadingAdapter-vR10Vr-Y.js","sha256":"d8a5f61b017dce5d2a1f05a90b7042c9904aedc3cd82469695367d4d0f5f7347","size":12426},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrUboDeclaration-CJwbKPYf.js","sha256":"a31e2bfdddd8693f23af0d88bd17d1d56a85eaa550fbe71b972a58abffe2c5b4","size":2398},{"media_type":"text/javascript; charset=utf-8","path":"assets/postprocess.vertex-Cb6Ywdp6.js","sha256":"ed097e907505e354410318dc206cb84546dd5e9fd5027ae819239e978b88eb3d","size":583},{"media_type":"text/javascript; charset=utf-8","path":"assets/procedural.vertex-Bn9sk4Es.js","sha256":"2c1777ed55be8cf70e5103d535581d4d5fcb7be8012d1373c9c8bf6872a3d230","size":472},{"media_type":"text/javascript; charset=utf-8","path":"assets/procedural.vertex-C1RaBmFH.js","sha256":"476823a5926dd9295ec2e0e210bc42cc9cea3b44ddc4e8a857a307eb06dcf960","size":612},{"media_type":"text/javascript; charset=utf-8","path":"assets/reflectionFunction-BNJZZ7JO.js","sha256":"719d559b5721c3a838148bba4f15f0d5dc52597af9ed793e22da1b70b7a8caa0","size":5231},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdDecode.fragment-CZ0YDY_n.js","sha256":"4ed4c096e307c436e836051813f70f029d04251aa7c9d62aa14440679b674725","size":671},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdEncode.fragment-BCNu9Cbk.js","sha256":"85423dc31628c699e28050892b20290cd46c69dca56652d35a04e25e799a2d5d","size":477},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdEncode.fragment-BZwLt2Lj.js","sha256":"e97cb5364b2c99048b9eefe0f2e58fc9037a4ccecc09ddd3b8c618611dd7f219","size":662},{"media_type":"text/javascript; charset=utf-8","path":"assets/sceneUboDeclaration-BMsSnMNb.js","sha256":"65b770d199d67a73ee7de7e612350a568c839a339522e0ce3ef7df19bd4b6515","size":435},{"media_type":"text/javascript; charset=utf-8","path":"assets/textureProcessor.fragment-CyDabLCU.js","sha256":"de3ad17cc450eccf8f8e75aa4960d2e5e4b429f89c93982ce4dd1a4e231fb9db","size":3490},{"media_type":"text/javascript; charset=utf-8","path":"assets/textureProcessor.fragment-DcADq6Q6.js","sha256":"a88a3a3ef58cca17ec19813cdb58e557d8d0991b0babea2e894e712cdb9d4652","size":4377},{"media_type":"text/javascript; charset=utf-8","path":"assets/tgaTextureLoader-vqDc34pp.js","sha256":"746fed85f78f165f1f3f264fec7dba690246272fe8b44a15b17d71dfa7916f97","size":3527},{"media_type":"text/javascript; charset=utf-8","path":"assets/vertexColorMixing-DtVGShSZ.js","sha256":"742e4c9280d6489480a22e774ae9b0c1ac5cb0cbc2b262ce22950f5d5b9106df","size":22140},{"media_type":"image/svg+xml","path":"favicon.svg","sha256":"0af8d9f546677c4655fbd25bcded1339b5de603d92808201b14dbee6301dd846","size":2222},{"media_type":"text/html; charset=utf-8","path":"index.html","sha256":"df1d11e1d865200b2b88fe15f37dcd64393dd670f5a9bed8e01c9707eace2542","size":723},{"media_type":"text/javascript; charset=utf-8","path":"sw.js","sha256":"60ad840f556e65a4226633d0222eb2ce447627dac537c5d15afcf54aa5f44b5d","size":5019}],"schema_id":"urn:python-cad-tools:schema:viewer-assets:1","schema_version":1}
@@ -1 +1 @@
1
- import{a$ as A,M as F,b0 as B,b1 as C,b2 as k,b3 as D,b4 as W,b5 as K,b6 as U,az as P,a0 as T,Q as S,V as Y,b7 as z,b8 as H,aP as G,b9 as w,ba as X,bb as J,bc as q}from"./index-aS20qDZO.js";class Q{get currentFrame(){return this._currentFrame}get weight(){return this._weight}get currentValue(){return this._currentValue}get targetPath(){return this._targetPath}get target(){return this._currentActiveTarget}get isAdditive(){return this._host&&this._host.isAdditive}constructor(e,t,i,n){if(this._events=new Array,this._currentFrame=0,this._originalValue=new Array,this._originalBlendValue=null,this._offsetsCache={},this._highLimitsCache={},this._stopped=!1,this._blendingFactor=0,this._currentValue=null,this._currentActiveTarget=null,this._directTarget=null,this._targetPath="",this._weight=1,this._absoluteFrameOffset=0,this._previousElapsedTime=0,this._yoyoDirection=1,this._previousAbsoluteFrame=0,this._targetIsArray=!1,this._coreRuntimeAnimation=null,this._animation=t,this._target=e,this._scene=i,this._host=n,this._activeTargets=[],t._runtimeAnimations.push(this),this._animationState={key:0,repeatCount:0,loopMode:this._getCorrectLoopMode()},this._animation.dataType===A.ANIMATIONTYPE_MATRIX&&(this._animationState.workValue=F.Zero()),this._keys=this._animation.getKeys(),this._minFrame=this._keys[0].frame,this._maxFrame=this._keys[this._keys.length-1].frame,this._minFrame!==0){const a={frame:0,value:this._keys[0].value};this._keys.splice(0,0,a)}if(this._target instanceof Array){let a=0;for(const l of this._target)this._preparePath(l,a),this._getOriginalValues(a),a++;this._targetIsArray=!0}else this._preparePath(this._target),this._getOriginalValues(),this._targetIsArray=!1,this._directTarget=this._activeTargets[0];const s=t.getEvents();if(s&&s.length>0)for(const a of s)this._events.push(a._clone());this._enableBlending=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.enableBlending:this._animation.enableBlending}_preparePath(e,t=0){const i=this._animation.targetPropertyPath;if(i.length>1){let n=e;for(let s=0;s<i.length-1;s++){const a=i[s];if(n=n[a],n===void 0)throw new Error(`Invalid property (${a}) in property path (${i.join(".")})`)}this._targetPath=i[i.length-1],this._activeTargets[t]=n}else this._targetPath=i[0],this._activeTargets[t]=e;if(this._activeTargets[t][this._targetPath]===void 0)throw new Error(`Invalid property (${this._targetPath}) in property path (${i.join(".")})`)}get animation(){return this._animation}reset(e=!1){if(e)if(this._target instanceof Array){let t=0;for(const i of this._target)this._originalValue[t]!==void 0&&this._setValue(i,this._activeTargets[t],this._originalValue[t],-1,t),t++}else this._originalValue[0]!==void 0&&this._setValue(this._target,this._directTarget,this._originalValue[0],-1,0);this._offsetsCache={},this._highLimitsCache={},this._currentFrame=0,this._blendingFactor=0;for(let t=0;t<this._events.length;t++)this._events[t].isDone=!1}isStopped(){return this._stopped}dispose(){const e=this._animation.runtimeAnimations.indexOf(this);e>-1&&this._animation.runtimeAnimations.splice(e,1)}setValue(e,t){if(this._targetIsArray){for(let i=0;i<this._target.length;i++){const n=this._target[i];this._setValue(n,this._activeTargets[i],e,t,i)}return}this._setValue(this._target,this._directTarget,e,t,0)}_getOriginalValues(e=0){let t;const i=this._activeTargets[e];if(A.InheritOriginalValueFromActiveAnimations){const n=this._scene._activeAnimatables;for(let s=0;s<n.length;s++){const a=n[s]._runtimeAnimations;for(let l=0;l<a.length;l++){const r=a[l];if(r!==this&&r._targetPath===this._targetPath){for(let h=0;h<r._activeTargets.length;h++)if(r._activeTargets[h]===i&&r._originalValue[h]!==void 0){r._originalValue[h]&&r._originalValue[h].clone?this._originalValue[e]=r._originalValue[h].clone():this._originalValue[e]=r._originalValue[h];return}}}}}i.getLocalMatrix&&this._targetPath==="_matrix"?t=i.getLocalMatrix():t=i[this._targetPath],t&&t.clone?this._originalValue[e]=t.clone():this._originalValue[e]=t}_registerTargetForLateAnimationBinding(e,t){const i=e.target;this._scene._registeredForLateAnimationBindings.pushNoDuplicate(i),i._lateAnimationHolders||(i._lateAnimationHolders={}),i._lateAnimationHolders[e.targetPath]||(i._lateAnimationHolders[e.targetPath]={totalWeight:0,totalAdditiveWeight:0,animations:[],additiveAnimations:[],originalValue:t}),e.isAdditive?(i._lateAnimationHolders[e.targetPath].additiveAnimations.push(e),i._lateAnimationHolders[e.targetPath].totalAdditiveWeight+=e.weight):(i._lateAnimationHolders[e.targetPath].animations.push(e),i._lateAnimationHolders[e.targetPath].totalWeight+=e.weight)}_setValue(e,t,i,n,s){if(this._currentActiveTarget=t,this._weight=n,this._enableBlending&&this._blendingFactor<=1){if(!this._originalBlendValue){const l=t[this._targetPath];l.clone?this._originalBlendValue=l.clone():this._originalBlendValue=l}this._originalBlendValue.m?A.AllowMatrixDecomposeForInterpolation?this._currentValue?F.DecomposeLerpToRef(this._originalBlendValue,i,this._blendingFactor,this._currentValue):this._currentValue=F.DecomposeLerp(this._originalBlendValue,i,this._blendingFactor):this._currentValue?F.LerpToRef(this._originalBlendValue,i,this._blendingFactor,this._currentValue):this._currentValue=F.Lerp(this._originalBlendValue,i,this._blendingFactor):this._currentValue=A._UniversalLerp(this._originalBlendValue,i,this._blendingFactor);const a=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.blendingSpeed:this._animation.blendingSpeed;this._blendingFactor+=a}else this._currentValue?this._currentValue.copyFrom?this._currentValue.copyFrom(i):this._currentValue=i:i?.clone?this._currentValue=i.clone():this._currentValue=i;n!==-1?this._registerTargetForLateAnimationBinding(this,this._originalValue[s]):this._animationState.loopMode===A.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT?this._currentValue.addToRef?this._currentValue.addToRef(this._originalValue[s],t[this._targetPath]):t[this._targetPath]=this._originalValue[s]+this._currentValue:t[this._targetPath]=this._currentValue,e.markAsDirty&&e.markAsDirty(this._animation.targetProperty)}_getCorrectLoopMode(){return this._target&&this._target.animationPropertiesOverride?this._target.getClassName?.()==="MorphTarget"&&this._target._animationPropertiesOverride==null?this._animation.loopMode:this._target.animationPropertiesOverride.loopMode:this._animation.loopMode}goToFrame(e,t=-1){const i=this._animation.getKeys();e<i[0].frame?e=i[0].frame:e>i[i.length-1].frame&&(e=i[i.length-1].frame);const n=this._events;if(n.length)for(let a=0;a<n.length;a++)n[a].onlyOnce||(n[a].isDone=n[a].frame<e);this._currentFrame=e;const s=this._animation._interpolate(e,this._animationState);this.setValue(s,t)}_prepareForSpeedRatioChange(e){const t=this._previousElapsedTime*(this._animation.framePerSecond*e)/1e3;this._absoluteFrameOffset=this._previousAbsoluteFrame-t}animate(e,t,i,n,s,a=-1){const l=this._animation,r=l.targetPropertyPath;if(!r||r.length<1)return this._stopped=!0,!1;let h=!0,g;const u=this._events;let c;if(this._coreRuntimeAnimation)c=i-t,g=this._coreRuntimeAnimation.currentFrame,this._currentFrame=g,this._animationState.repeatCount=this._coreRuntimeAnimation._animationState.repeatCount,this._animationState.highLimitValue=this._coreRuntimeAnimation._animationState.highLimitValue,this._animationState.offsetValue=this._coreRuntimeAnimation._animationState.offsetValue;else{(t<this._minFrame||t>this._maxFrame)&&(t=this._minFrame),(i<this._minFrame||i>this._maxFrame)&&(i=this._maxFrame),c=i-t;let _,m=e*(l.framePerSecond*s)/1e3+this._absoluteFrameOffset,b=0,V=!1;const O=n&&this._animationState.loopMode===A.ANIMATIONLOOPMODE_YOYO;if(O){const d=(m-t)/c,p=Math.sin(d*Math.PI);m=Math.abs(p)*c+t;const L=p>=0?1:-1;this._yoyoDirection!==L&&(V=!0),this._yoyoDirection=L}if(this._previousElapsedTime=e,this._previousAbsoluteFrame=m,!n&&i>=t&&(m>=c&&s>0||m<=0&&s<0))h=!1,b=l.evaluate(i);else if(!n&&t>=i&&(m<=c&&s<0||m>=0&&s>0))h=!1,b=l.evaluate(t);else if(this._animationState.loopMode!==A.ANIMATIONLOOPMODE_CYCLE){const d=i.toString()+t.toString();if(!this._offsetsCache[d]){this._animationState.repeatCount=0,this._animationState.loopMode=A.ANIMATIONLOOPMODE_CYCLE;const p=l._interpolate(t,this._animationState),y=l._interpolate(i,this._animationState);switch(this._animationState.loopMode=this._getCorrectLoopMode(),l.dataType){case A.ANIMATIONTYPE_FLOAT:this._offsetsCache[d]=y-p;break;case A.ANIMATIONTYPE_QUATERNION:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_VECTOR3:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_VECTOR2:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_SIZE:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_COLOR3:this._offsetsCache[d]=y.subtract(p);break}this._highLimitsCache[d]=y}b=this._highLimitsCache[d],_=this._offsetsCache[d]}if(_===void 0)switch(l.dataType){case A.ANIMATIONTYPE_FLOAT:_=0;break;case A.ANIMATIONTYPE_QUATERNION:_=K;break;case A.ANIMATIONTYPE_VECTOR3:_=W;break;case A.ANIMATIONTYPE_VECTOR2:_=D;break;case A.ANIMATIONTYPE_SIZE:_=k;break;case A.ANIMATIONTYPE_COLOR3:_=C;break;case A.ANIMATIONTYPE_COLOR4:_=B;break}if(this._host&&this._host.syncRoot){const d=this._host.syncRoot,p=(d.masterFrame-d.fromFrame)/(d.toFrame-d.fromFrame);g=t+c*p}else m>0&&t>i||m<0&&t<i?g=h&&c!==0?i+m%c:t:g=h&&c!==0?t+m%c:i;if(!O&&(s>0&&this.currentFrame>g||s<0&&this.currentFrame<g)||O&&V){this._onLoop();for(let d=0;d<u.length;d++)u[d].onlyOnce||(u[d].isDone=!1);this._animationState.key=s>0?0:l.getKeys().length-1}this._currentFrame=g,this._animationState.repeatCount=c===0?0:m/c>>0,this._animationState.highLimitValue=b,this._animationState.offsetValue=_}const f=l._interpolate(g,this._animationState);if(this.setValue(f,a),u.length){for(let _=0;_<u.length;_++)if(c>=0&&g>=u[_].frame&&u[_].frame>=t||c<0&&g<=u[_].frame&&u[_].frame<=t){const m=u[_];m.isDone||(m.onlyOnce&&(u.splice(_,1),_--),m.isDone=!0,m.action(g))}}return h||(this._stopped=!0),h}}class I{get syncRoot(){return this._syncRoot}get masterFrame(){return this._runtimeAnimations.length===0?0:this._runtimeAnimations[0].currentFrame}get weight(){return this._weight}set weight(e){if(e===-1){this._weight=-1;return}this._weight=Math.min(Math.max(e,0),1)}get speedRatio(){return this._speedRatio}set speedRatio(e){for(let t=0;t<this._runtimeAnimations.length;t++)this._runtimeAnimations[t]._prepareForSpeedRatioChange(e);this._speedRatio=e,this._goToFrame!==null&&this.goToFrame(this._goToFrame)}get elapsedTime(){return this._localDelayOffset===null?0:this._scene._animationTime-this._localDelayOffset}constructor(e,t,i=0,n=100,s=!1,a=1,l,r,h,g=!1,u=0){this.target=t,this.fromFrame=i,this.toFrame=n,this.loopAnimation=s,this.onAnimationEnd=l,this.onAnimationLoop=h,this.isAdditive=g,this.playOrder=u,this._localDelayOffset=null,this._pausedDelay=null,this._manualJumpDelay=null,this._runtimeAnimations=new Array,this._paused=!1,this._speedRatio=1,this._weight=-1,this._previousWeight=-1,this._syncRoot=null,this._frameToSyncFromJump=null,this._goToFrame=null,this.disposeOnEnd=!0,this.animationStarted=!1,this.onAnimationEndObservable=new P,this.onAnimationLoopObservable=new P,this._scene=e,r&&this.appendAnimations(t,r),this._speedRatio=a,e._activeAnimatables.push(this)}syncWith(e){if(this._syncRoot=e,e){const t=this._scene._activeAnimatables.indexOf(this);t>-1&&(this._scene._activeAnimatables.splice(t,1),this._scene._activeAnimatables.push(this))}return this}getAnimations(){return this._runtimeAnimations}appendAnimations(e,t){for(let i=0;i<t.length;i++){const n=t[i],s=new Q(e,n,this._scene,this);s._onLoop=()=>{this.onAnimationLoopObservable.notifyObservers(this),this.onAnimationLoop&&this.onAnimationLoop()},this._runtimeAnimations.push(s)}}getAnimationByTargetProperty(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)if(t[i].animation.targetProperty===e)return t[i].animation;return null}getRuntimeAnimationByTargetProperty(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)if(t[i].animation.targetProperty===e)return t[i];return null}reset(){const e=this._runtimeAnimations;for(let t=0;t<e.length;t++)e[t].reset(!0);this._localDelayOffset=null,this._pausedDelay=null}enableBlending(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)t[i].animation.enableBlending=!0,t[i].animation.blendingSpeed=e}disableBlending(){const e=this._runtimeAnimations;for(let t=0;t<e.length;t++)e[t].animation.enableBlending=!1}goToFrame(e,t=!1){const i=this._runtimeAnimations;if(i[0]){const n=i[0].animation.framePerSecond;this._frameToSyncFromJump=this._frameToSyncFromJump??i[0].currentFrame;const s=this.speedRatio===0?0:(e-this._frameToSyncFromJump)/n*1e3/this.speedRatio;this._manualJumpDelay=-s}for(let n=0;n<i.length;n++)i[n].goToFrame(e,t?this._weight:-1);this._goToFrame=e}get paused(){return this._paused}pause(){this._paused||(this._paused=!0)}restart(){this._paused=!1}_raiseOnAnimationEnd(){this.onAnimationEnd&&this.onAnimationEnd(),this.onAnimationEndObservable.notifyObservers(this)}stop(e,t,i=!1,n=!1){if(e||t){const s=this._scene._activeAnimatables.indexOf(this);if(s>-1){const a=this._runtimeAnimations;for(let l=a.length-1;l>=0;l--){const r=a[l];e&&r.animation.name!=e||t&&!t(r.target)||(r.dispose(),a.splice(l,1))}a.length==0&&(i||this._scene._activeAnimatables.splice(s,1),n||this._raiseOnAnimationEnd())}}else{const s=this._scene._activeAnimatables.indexOf(this);if(s>-1){i||this._scene._activeAnimatables.splice(s,1);const a=this._runtimeAnimations;for(let l=0;l<a.length;l++)a[l].dispose();this._runtimeAnimations.length=0,n||this._raiseOnAnimationEnd()}}}async waitAsync(){return await new Promise(e=>{this.onAnimationEndObservable.add(()=>{e(this)},void 0,void 0,this,!0)})}_animate(e){if(this._paused)return this.animationStarted=!1,this._pausedDelay===null&&(this._pausedDelay=e),!0;if(this._localDelayOffset===null?(this._localDelayOffset=e,this._pausedDelay=null):this._pausedDelay!==null&&(this._localDelayOffset+=e-this._pausedDelay,this._pausedDelay=null),this._manualJumpDelay!==null&&(this._localDelayOffset+=this.speedRatio<0?-this._manualJumpDelay:this._manualJumpDelay,this._manualJumpDelay=null,this._frameToSyncFromJump=null),this._goToFrame=null,!I.ProcessPausedAnimatables&&this._weight===0&&this._previousWeight===0)return!0;this._previousWeight=this._weight;let t=!1;const i=this._runtimeAnimations;let n;for(n=0;n<i.length;n++){const a=i[n].animate(e-this._localDelayOffset,this.fromFrame,this.toFrame,this.loopAnimation,this._speedRatio,this._weight);t=t||a}if(this.animationStarted=t,!t){if(this.disposeOnEnd)for(n=this._scene._activeAnimatables.indexOf(this),this._scene._activeAnimatables.splice(n,1),n=0;n<i.length;n++)i[n].dispose();this._raiseOnAnimationEnd(),this.disposeOnEnd&&(this.onAnimationEnd=null,this.onAnimationLoop=null,this.onAnimationLoopObservable.clear(),this.onAnimationEndObservable.clear())}return t}}I.ProcessPausedAnimatables=!1;function $(o){if(o.totalWeight===0&&o.totalAdditiveWeight===0)return o.originalValue;let e=1;const t=T.Vector3[0],i=T.Vector3[1],n=T.Quaternion[0];let s=0;const a=o.animations[0],l=o.originalValue;let r,h=!1;if(o.totalWeight<1)r=1-o.totalWeight,l.decompose(i,n,t);else{if(s=1,e=o.totalWeight,r=a.weight/e,r==1)if(o.totalAdditiveWeight)h=!0;else return a.currentValue;a.currentValue.decompose(i,n,t)}if(!h){i.scaleInPlace(r),t.scaleInPlace(r),n.scaleInPlace(r);for(let u=s;u<o.animations.length;u++){const c=o.animations[u];if(c.weight===0)continue;r=c.weight/e;const f=T.Vector3[2],_=T.Vector3[3],m=T.Quaternion[1];c.currentValue.decompose(_,m,f),_.scaleAndAddToRef(r,i),m.scaleAndAddToRef(S.Dot(n,m)>0?r:-r,n),f.scaleAndAddToRef(r,t)}n.normalize()}for(let u=0;u<o.additiveAnimations.length;u++){const c=o.additiveAnimations[u];if(c.weight===0)continue;const f=T.Vector3[2],_=T.Vector3[3],m=T.Quaternion[1];c.currentValue.decompose(_,m,f),_.multiplyToRef(i,_),Y.LerpToRef(i,_,c.weight,i),n.multiplyToRef(m,m),S.SlerpToRef(n,m,c.weight,n),f.scaleAndAddToRef(c.weight,t)}const g=a?a._animationState.workValue:T.Matrix[0].clone();return F.ComposeToRef(i,n,t,g),g}function j(o,e){if(o.totalWeight===0&&o.totalAdditiveWeight===0)return e;const t=o.animations[0],i=o.originalValue;let n=e;if(o.totalWeight===0&&o.totalAdditiveWeight>0)n.copyFrom(i);else if(o.animations.length===1){if(S.SlerpToRef(i,t.currentValue,Math.min(1,o.totalWeight),n),o.totalAdditiveWeight===0)return n}else if(o.animations.length>1){let s=1,a,l;if(o.totalWeight<1){const h=1-o.totalWeight;a=[],l=[],a.push(i),l.push(h)}else{if(o.animations.length===2&&(S.SlerpToRef(o.animations[0].currentValue,o.animations[1].currentValue,o.animations[1].weight/o.totalWeight,e),o.totalAdditiveWeight===0))return e;a=[],l=[],s=o.totalWeight}for(let h=0;h<o.animations.length;h++){const g=o.animations[h];a.push(g.currentValue),l.push(g.weight/s)}let r=0;for(let h=0;h<a.length;){if(!h){S.SlerpToRef(a[h],a[h+1],l[h+1]/(l[h]+l[h+1]),e),n=e,r=l[h]+l[h+1],h+=2;continue}r+=l[h],S.SlerpToRef(n,a[h],l[h]/r,n),h++}}for(let s=0;s<o.additiveAnimations.length;s++){const a=o.additiveAnimations[s];a.weight!==0&&(n.multiplyToRef(a.currentValue,T.Quaternion[0]),S.SlerpToRef(n,T.Quaternion[0],a.weight,n))}return n}function Z(o){if(o._registeredForLateAnimationBindings.length){for(let e=0;e<o._registeredForLateAnimationBindings.length;e++){const t=o._registeredForLateAnimationBindings.data[e];for(const i in t._lateAnimationHolders){const n=t._lateAnimationHolders[i],s=n.animations[0],a=n.originalValue;if(a==null)continue;const l=A.AllowMatrixDecomposeForInterpolation&&a.m;let r=t[i];if(l)r=$(n);else if(a.w!==void 0)r=j(n,r||S.Identity());else{let g=0,u=1;const c=s&&s._animationState.loopMode===A.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT;if(n.totalWeight<1)c?r=a.clone?a.clone():a:s&&a.scale?r=a.scale(1-n.totalWeight):s?r=a*(1-n.totalWeight):a.clone?r=a.clone():r=a;else if(s){u=n.totalWeight;const f=s.weight/u;f!==1?s.currentValue.scale?r=s.currentValue.scale(f):r=s.currentValue*f:r=s.currentValue,c&&(r.addToRef?r.addToRef(a,r):r+=a),g=1}for(let f=g;f<n.animations.length;f++){const _=n.animations[f],m=_.weight/u;if(m)_.currentValue.scaleAndAddToRef?_.currentValue.scaleAndAddToRef(m,r):r+=_.currentValue*m;else continue}for(let f=0;f<n.additiveAnimations.length;f++){const _=n.additiveAnimations[f],m=_.weight;if(m)_.currentValue.scaleAndAddToRef?_.currentValue.scaleAndAddToRef(m,r):r+=_.currentValue*m;else continue}}t[i]=r}t._lateAnimationHolders={}}o._registeredForLateAnimationBindings.reset()}}function tt(o,e){e&&(e.prototype.copyAnimationRange=function(t,i,n,s=!1,a=null){this.animations.length===0&&(this.animations.push(new A(this.name,"_matrix",t.animations[0].framePerSecond,A.ANIMATIONTYPE_MATRIX,0)),this.animations[0].setKeys([]));const l=t.animations[0].getRange(i);if(!l)return!1;const r=l.from,h=l.to,g=t.animations[0].getKeys(),u=t.length,c=t.getParent(),f=this.getParent(),_=s&&c&&u&&this.length&&u!==this.length,m=_&&f&&c?f.length/c.length:1,b=s&&!f&&a&&(a.x!==1||a.y!==1||a.z!==1),V=this.animations[0].getKeys();let O,d,p;for(let y=0,L=g.length;y<L;y++)O=g[y],O.frame>=r&&O.frame<=h&&(s?(p=O.value.clone(),_?(d=p.getTranslation(),p.setTranslation(d.scaleInPlace(m))):b&&a?(d=p.getTranslation(),p.setTranslation(d.multiplyInPlace(a))):p=O.value):p=O.value,V.push({frame:O.frame+n,value:p}));return this.animations[0].createRange(i,r+n,h+n),!0}),o&&(o.prototype._animate=function(t){if(!this.animationsEnabled)return;const i=U.Now;if(!this._animationTimeLast){if(this._pendingData.length>0)return;this._animationTimeLast=i}this.deltaTime=t!==void 0?t:this.useConstantAnimationDeltaTime?16:(i-this._animationTimeLast)*this.animationTimeScale,this._animationTimeLast=i;const n=this._activeAnimatables;if(n.length===0)return;this._animationTime+=this.deltaTime;const s=this._animationTime;for(let a=0;a<n.length;a++){const l=n[a];!l._animate(s)&&l.disposeOnEnd&&a--}Z(this)},o.prototype.sortActiveAnimatables=function(){this._activeAnimatables.sort((t,i)=>t.playOrder-i.playOrder)},o.prototype.beginWeightedAnimation=function(t,i,n,s=1,a,l=1,r,h,g,u,c=!1){const f=this.beginAnimation(t,i,n,a,l,r,h,!1,g,u,c);return f.weight=s,f},o.prototype.beginAnimation=function(t,i,n,s,a=1,l,r,h=!0,g,u,c=!1){if(a<0){const _=i;i=n,n=_,a=-a}i>n&&(a=-a),h&&this.stopAnimation(t,void 0,g),r||(r=new I(this,t,i,n,s,a,l,void 0,u,c));const f=g?g(t):!0;if(t.animations&&f&&r.appendAnimations(t,t.animations),t.getAnimatables){const _=t.getAnimatables();for(let m=0;m<_.length;m++)this.beginAnimation(_[m],i,n,s,a,l,r,h,g,u)}return r.reset(),r},o.prototype.beginHierarchyAnimation=function(t,i,n,s,a,l=1,r,h,g=!0,u,c,f=!1){const _=t.getDescendants(i),m=[];m.push(this.beginAnimation(t,n,s,a,l,r,h,g,u,void 0,f));for(const b of _)m.push(this.beginAnimation(b,n,s,a,l,r,h,g,u,void 0,f));return m},o.prototype.beginDirectAnimation=function(t,i,n,s,a,l=1,r,h,g=!1){if(l<0){const c=n;n=s,s=c,l=-l}return n>s&&(l=-l),new I(this,t,n,s,a,l,r,i,h,g)},o.prototype.beginDirectHierarchyAnimation=function(t,i,n,s,a,l,r,h,g,u=!1){const c=t.getDescendants(i),f=[];f.push(this.beginDirectAnimation(t,n,s,a,l,r,h,g,u));for(const _ of c)f.push(this.beginDirectAnimation(_,n,s,a,l,r,h,g,u));return f},o.prototype.getAnimatableByTarget=function(t){for(let i=0;i<this._activeAnimatables.length;i++)if(this._activeAnimatables[i].target===t)return this._activeAnimatables[i];return null},o.prototype.getAllAnimatablesByTarget=function(t){const i=[];for(let n=0;n<this._activeAnimatables.length;n++)this._activeAnimatables[n].target===t&&i.push(this._activeAnimatables[n]);return i},o.prototype.stopAnimation=function(t,i,n){const s=this.getAllAnimatablesByTarget(t);for(const a of s)a.stop(i,n)},o.prototype.stopAllAnimations=function(){if(this._activeAnimatables){for(let t=0;t<this._activeAnimatables.length;t++)this._activeAnimatables[t].stop(void 0,void 0,!0);this._activeAnimatables.length=0}for(const t of this.animationGroups)t.stop()})}let x=!1;function et(){x||(x=!0,tt(H,z))}class it{getClassName(){return"TargetedAnimation"}constructor(e){this.parent=e,this.uniqueId=q.UniqueId}serialize(){const e={};return e.animation=this.animation.serialize(),e.targetId=this.target.id,e.targetUniqueId=this.target.uniqueId,e}}class v{get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this.syncWithMask(!0))}syncWithMask(e=!1){if(!this.mask&&!e){this._numActiveAnimatables=this._targetedAnimations.length;return}this._numActiveAnimatables=0;for(let t=0;t<this._animatables.length;++t){const i=this._animatables[t];!this.mask||this.mask.disabled||this.mask.retainsTarget(i.target.name)?(this._numActiveAnimatables++,i.paused&&i.restart()):i.paused||i.pause()}}removeUnmaskedAnimations(){if(!(!this.mask||this.mask.disabled)){for(let e=0;e<this._animatables.length;++e){const t=this._animatables[e];this.mask.retainsTarget(t.target.name)||(t.stop(),this._animatables.splice(e,1),--e)}for(let e=0;e<this._targetedAnimations.length;e++){const t=this._targetedAnimations[e];this.mask.retainsTarget(t.target.name)||(this._targetedAnimations.splice(e,1),--e)}}}get from(){return this._from}set from(e){if(this._from!==e){this._from=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.fromFrame=this._from}}}get to(){return this._to}set to(e){if(this._to!==e){this._to=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.toFrame=this._to}}}get isStarted(){return this._isStarted}get isPlaying(){return this._isStarted&&!this._isPaused}get speedRatio(){return this._speedRatio}set speedRatio(e){if(this._speedRatio!==e){this._speedRatio=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.speedRatio=this._speedRatio}}}get loopAnimation(){return this._loopAnimation}set loopAnimation(e){if(this._loopAnimation!==e){this._loopAnimation=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.loopAnimation=this._loopAnimation}}}get isAdditive(){return this._isAdditive}set isAdditive(e){if(this._isAdditive!==e){this._isAdditive=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.isAdditive=this._isAdditive}}}get weight(){return this._weight}set weight(e){this._weight!==e&&(this._weight=e,this.setWeightForAllAnimatables(this._weight))}get targetedAnimations(){return this._targetedAnimations}get animatables(){return this._animatables}get children(){return this._targetedAnimations}get playOrder(){return this._playOrder}set playOrder(e){if(this._playOrder!==e&&(this._playOrder=e,this._animatables.length>0)){for(let t=0;t<this._animatables.length;t++)this._animatables[t].playOrder=this._playOrder;this._scene.sortActiveAnimatables()}}get enableBlending(){return this._enableBlending}set enableBlending(e){if(this._enableBlending!==e&&(this._enableBlending=e,e!==null))for(let t=0;t<this._targetedAnimations.length;++t)this._targetedAnimations[t].animation.enableBlending=e}get blendingSpeed(){return this._blendingSpeed}set blendingSpeed(e){if(this._blendingSpeed!==e&&(this._blendingSpeed=e,e!==null))for(let t=0;t<this._targetedAnimations.length;++t)this._targetedAnimations[t].animation.blendingSpeed=e}getLength(e,t){e=e??this._from,t=t??this._to;const i=this.targetedAnimations[0].animation.framePerSecond*this._speedRatio;return(t-e)/i}getScene(){return this._scene}constructor(e,t=null,i=-1,n=0){this.name=e,this._targetedAnimations=new Array,this._animatables=new Array,this._from=Number.MAX_VALUE,this._to=-Number.MAX_VALUE,this._speedRatio=1,this._loopAnimation=!1,this._isAdditive=!1,this._weight=-1,this._playOrder=0,this._enableBlending=null,this._blendingSpeed=null,this._numActiveAnimatables=0,this._shouldStart=!0,this._parentContainer=null,this.onAnimationEndObservable=new P,this.onAnimationLoopObservable=new P,this.onAnimationGroupLoopObservable=new P,this.onAnimationGroupEndObservable=new P,this.onAnimationGroupPauseObservable=new P,this.onAnimationGroupPlayObservable=new P,this.metadata=null,this._mask=null,this._animationLoopFlags=[],this._scene=t||G.LastCreatedScene,this._weight=i,this._playOrder=n,this.uniqueId=this._scene.getUniqueId(),et(),this._scene.addAnimationGroup(this)}addTargetedAnimation(e,t){const i=new it(this);i.animation=e,i.target=t;const n=e.getKeys();return this._from>n[0].frame&&(this._from=n[0].frame),this._to<n[n.length-1].frame&&(this._to=n[n.length-1].frame),this._enableBlending!==null&&(e.enableBlending=this._enableBlending),this._blendingSpeed!==null&&(e.blendingSpeed=this._blendingSpeed),this._targetedAnimations.push(i),this._shouldStart=!0,i}removeTargetedAnimation(e){for(let t=this._targetedAnimations.length-1;t>-1;t--)this._targetedAnimations[t].animation===e&&this._targetedAnimations.splice(t,1)}normalize(e=null,t=null){e==null&&(e=this._from),t==null&&(t=this._to);for(let i=0;i<this._targetedAnimations.length;i++){const s=this._targetedAnimations[i].animation.getKeys(),a=s[0],l=s[s.length-1];if(a.frame>e){const r={frame:e,value:a.value,inTangent:a.inTangent,outTangent:a.outTangent,interpolation:a.interpolation};s.splice(0,0,r)}if(l.frame<t){const r={frame:t,value:l.value,inTangent:l.inTangent,outTangent:l.outTangent,interpolation:l.interpolation};s.push(r)}}return this._from=e,this._to=t,this}_processLoop(e,t,i){e.onAnimationLoop=()=>{this.onAnimationLoopObservable.notifyObservers(t),!this._animationLoopFlags[i]&&(this._animationLoopFlags[i]=!0,this._animationLoopCount++,this._animationLoopCount===this._numActiveAnimatables&&(this.onAnimationGroupLoopObservable.notifyObservers(this),this._animationLoopCount=0,this._animationLoopFlags.length=0))}}start(e=!1,t=1,i,n,s){if(this._isStarted||this._targetedAnimations.length===0)return this;this._loopAnimation=e,this._shouldStart=!1,this._animationLoopCount=0,this._animationLoopFlags.length=0;for(let a=0;a<this._targetedAnimations.length;a++){const l=this._targetedAnimations[a],r=this._scene.beginDirectAnimation(l.target,[l.animation],i!==void 0?i:this._from,n!==void 0?n:this._to,e,t,void 0,void 0,s!==void 0?s:this._isAdditive);r.weight=this._weight,r.playOrder=this._playOrder,r.onAnimationEnd=()=>{this.onAnimationEndObservable.notifyObservers(l),this._checkAnimationGroupEnded(r)},this._processLoop(r,l,a),this._animatables.push(r)}return this.syncWithMask(),this._scene.sortActiveAnimatables(),this._speedRatio=t,this._isStarted=!0,this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}pause(){if(!this._isStarted)return this;this._isPaused=!0;for(let e=0;e<this._animatables.length;e++)this._animatables[e].pause();return this.onAnimationGroupPauseObservable.notifyObservers(this),this}play(e){return this.isStarted&&this._animatables.length&&!this._shouldStart?(e!==void 0&&(this.loopAnimation=e),this.restart()):(this.stop(),this.start(e,this._speedRatio)),this}reset(){if(!this._isStarted)return this.play(),this.goToFrame(0),this.stop(!0),this;for(let e=0;e<this._animatables.length;e++)this._animatables[e].reset();return this}restart(){if(!this._isStarted)return this;for(let e=0;e<this._animatables.length;e++)this._animatables[e].restart();return this.syncWithMask(),this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}stop(e=!1){if(!this._isStarted)return this;const t=this._animatables.slice();for(let n=0;n<t.length;n++)t[n].stop(void 0,void 0,!0,e);let i=0;for(let n=0;n<this._scene._activeAnimatables.length;n++){const s=this._scene._activeAnimatables[n];s._runtimeAnimations.length>0?this._scene._activeAnimatables[i++]=s:e&&this._checkAnimationGroupEnded(s,e)}return this._scene._activeAnimatables.length=i,this._isStarted=!1,this}setWeightForAllAnimatables(e){for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.weight=e}return this}syncAllAnimationsWith(e){for(let t=0;t<this._animatables.length;t++)this._animatables[t].syncWith(e);return this}goToFrame(e,t=!1){if(!this._isStarted)return this;for(let i=0;i<this._animatables.length;i++)this._animatables[i].goToFrame(e,t);return this}getCurrentFrame(){return this.animatables[0]?.masterFrame||0}dispose(){if(this.isStarted&&this.stop(),this._targetedAnimations.length=0,this._animatables.length=0,this._scene.removeAnimationGroup(this),this._parentContainer){const e=this._parentContainer.animationGroups.indexOf(this);e>-1&&this._parentContainer.animationGroups.splice(e,1),this._parentContainer=null}this.onAnimationEndObservable.clear(),this.onAnimationGroupEndObservable.clear(),this.onAnimationGroupPauseObservable.clear(),this.onAnimationGroupPlayObservable.clear(),this.onAnimationLoopObservable.clear(),this.onAnimationGroupLoopObservable.clear()}_checkAnimationGroupEnded(e,t=!1){const i=this._animatables.indexOf(e);i>-1&&this._animatables.splice(i,1),this._animatables.length===this._targetedAnimations.length-this._numActiveAnimatables&&(this._isStarted=!1,t||this.onAnimationGroupEndObservable.notifyObservers(this),this._animatables.length=0)}clone(e,t,i=!1,n=!1){const s=new v(e||this.name,this._scene,this._weight,this._playOrder);s._from=this.from,s._to=this.to,s._speedRatio=this.speedRatio,s._loopAnimation=this.loopAnimation,s._isAdditive=this.isAdditive,s._enableBlending=this.enableBlending,s._blendingSpeed=this.blendingSpeed,s.metadata=this.metadata,s.mask=this.mask;for(const a of this._targetedAnimations)s.addTargetedAnimation(i?a.animation.clone(n):a.animation,t?t(a.target):a.target);return s}serialize(){const e={};e.name=this.name,e.from=this.from,e.to=this.to,e.speedRatio=this.speedRatio,e.loopAnimation=this.loopAnimation,e.isAdditive=this.isAdditive,e.weight=this.weight,e.playOrder=this.playOrder,e.enableBlending=this.enableBlending,e.blendingSpeed=this.blendingSpeed,e.targetedAnimations=[];for(let t=0;t<this.targetedAnimations.length;t++){const i=this.targetedAnimations[t];e.targetedAnimations[t]=i.serialize()}return w&&w.HasTags(this)&&(e.tags=w.GetTags(this)),this.metadata&&(e.metadata=this.metadata),e}getClassName(){return"AnimationGroup"}toString(e){let t="Name: "+this.name;return t+=", type: "+this.getClassName(),e&&(t+=", from: "+this._from,t+=", to: "+this._to,t+=", isStarted: "+this._isStarted,t+=", speedRatio: "+this._speedRatio,t+=", targetedAnimations length: "+this._targetedAnimations.length,t+=", animatables length: "+this._animatables.length),t}}function nt(o,e=!0,t=!1,i){if(o.length===0)return null;i=i??o[0].weight;let n=Number.MAX_VALUE,s=-Number.MAX_VALUE;if(t)for(const l of o)l.from<n&&(n=l.from),l.to>s&&(s=l.to);const a=new v(o[0].name+"_merged",o[0].getScene(),i);for(const l of o){t&&l.normalize(n,s);for(const r of l.targetedAnimations)a.addTargetedAnimation(r.animation,r.target);e&&l.dispose()}return a}function at(o,e,t){const i=new v(o.name,e,o.weight,o.playOrder),n=i;for(let s=0;s<o.targetedAnimations.length;s++){const a=o.targetedAnimations[s],l=J(a.animation),r=t?t(a):a.animation.property==="influence"?e.getMorphTargetById(a.targetId):e.getNodeById(a.targetId);r&&i.addTargetedAnimation(l,r)}return w&&w.AddTagsTo(i,o.tags),o.from!==null&&o.to!==null&&i.normalize(o.from,o.to),o.speedRatio!==void 0&&(n._speedRatio=o.speedRatio),o.loopAnimation!==void 0&&(n._loopAnimation=o.loopAnimation),o.isAdditive!==void 0&&(n._isAdditive=o.isAdditive),o.weight!==void 0&&(n._weight=o.weight),o.playOrder!==void 0&&(n._playOrder=o.playOrder),o.enableBlending!==void 0&&(n._enableBlending=o.enableBlending),o.blendingSpeed!==void 0&&(n._blendingSpeed=o.blendingSpeed),o.metadata!==void 0&&(i.metadata=o.metadata),i}function st(o,e,t,i=!1,n){let s;typeof e=="object"?s=e:s={referenceFrame:e,range:t,cloneOriginalAnimationGroup:i,clonedAnimationName:n};let a=o;s.cloneOriginalAnimationGroup&&(a=o.clone(s.clonedAnimationGroupName||a.name));const l=a.targetedAnimations;for(let r=0;r<l.length;r++){const h=l[r];h.animation=X(h.animation,s)}if(a.isAdditive=!0,s.clipKeys){let r=Number.MAX_VALUE,h=-Number.MAX_VALUE;const g=a.targetedAnimations;for(let c=0;c<g.length;c++){const m=g[c].animation.getKeys();r>m[0].frame&&(r=m[0].frame),h<m[m.length-1].frame&&(h=m[m.length-1].frame)}const u=a;u._from=r,u._to=h}return a}function ot(o,e,t,i,n){const s=o.clone(i||o.name);return E(s,e,t,n)}function E(o,e,t,i){return R(o,e,t,i,!1)}function rt(o,e,t,i,n){const s=o.clone(i||o.name);return N(s,e,t,n)}function N(o,e,t,i){return R(o,e,t,i,!0)}function R(o,e,t,i,n=!1){let s=Number.MAX_VALUE,a=-Number.MAX_VALUE;const l=o.targetedAnimations;for(let h=0;h<l.length;h++){const g=l[h],u=i?g.animation:g.animation.clone();n&&(u.createKeyForFrame(e),u.createKeyForFrame(t));const c=u.getKeys(),f=[];let _=Number.MAX_VALUE;for(let m=0;m<c.length;m++){const b=c[m];if(!n&&m>=e&&m<=t||n&&b.frame>=e&&b.frame<=t){const V={frame:b.frame,value:b.value.clone?b.value.clone():b.value,inTangent:b.inTangent,outTangent:b.outTangent,interpolation:b.interpolation,lockedTangent:b.lockedTangent};_===Number.MAX_VALUE&&(_=V.frame),V.frame-=_,f.push(V)}}if(f.length===0){l.splice(h,1),h--;continue}s>f[0].frame&&(s=f[0].frame),a<f[f.length-1].frame&&(a=f[f.length-1].frame),u.setKeys(f,!0),g.animation=u}const r=o;return r._from=s,r._to=a,o}let M=!1;function lt(){M||(M=!0,v.MergeAnimationGroups=nt,v.Parse=at,v.MakeAnimationAdditive=st,v.ClipKeys=ot,v.ClipKeysInPlace=E,v.ClipFrames=rt,v.ClipFramesInPlace=N,v.ClipInPlace=R)}lt();export{v as AnimationGroup,rt as AnimationGroupClipFrames,N as AnimationGroupClipFramesInPlace,R as AnimationGroupClipInPlace,ot as AnimationGroupClipKeys,E as AnimationGroupClipKeysInPlace,st as AnimationGroupMakeAnimationAdditive,nt as AnimationGroupMergeAnimationGroups,at as AnimationGroupParse,lt as RegisterAnimationGroup,it as TargetedAnimation};
1
+ import{b0 as A,W as F,b1 as B,b2 as C,b3 as k,b4 as D,b5 as W,b6 as K,b7 as U,aA as P,a4 as T,X as S,V as Y,b8 as z,b9 as H,aQ as G,ba as w,bb as X,bc as J,bd as q}from"./index-7lfB9OVT.js";class Q{get currentFrame(){return this._currentFrame}get weight(){return this._weight}get currentValue(){return this._currentValue}get targetPath(){return this._targetPath}get target(){return this._currentActiveTarget}get isAdditive(){return this._host&&this._host.isAdditive}constructor(e,t,i,n){if(this._events=new Array,this._currentFrame=0,this._originalValue=new Array,this._originalBlendValue=null,this._offsetsCache={},this._highLimitsCache={},this._stopped=!1,this._blendingFactor=0,this._currentValue=null,this._currentActiveTarget=null,this._directTarget=null,this._targetPath="",this._weight=1,this._absoluteFrameOffset=0,this._previousElapsedTime=0,this._yoyoDirection=1,this._previousAbsoluteFrame=0,this._targetIsArray=!1,this._coreRuntimeAnimation=null,this._animation=t,this._target=e,this._scene=i,this._host=n,this._activeTargets=[],t._runtimeAnimations.push(this),this._animationState={key:0,repeatCount:0,loopMode:this._getCorrectLoopMode()},this._animation.dataType===A.ANIMATIONTYPE_MATRIX&&(this._animationState.workValue=F.Zero()),this._keys=this._animation.getKeys(),this._minFrame=this._keys[0].frame,this._maxFrame=this._keys[this._keys.length-1].frame,this._minFrame!==0){const a={frame:0,value:this._keys[0].value};this._keys.splice(0,0,a)}if(this._target instanceof Array){let a=0;for(const l of this._target)this._preparePath(l,a),this._getOriginalValues(a),a++;this._targetIsArray=!0}else this._preparePath(this._target),this._getOriginalValues(),this._targetIsArray=!1,this._directTarget=this._activeTargets[0];const s=t.getEvents();if(s&&s.length>0)for(const a of s)this._events.push(a._clone());this._enableBlending=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.enableBlending:this._animation.enableBlending}_preparePath(e,t=0){const i=this._animation.targetPropertyPath;if(i.length>1){let n=e;for(let s=0;s<i.length-1;s++){const a=i[s];if(n=n[a],n===void 0)throw new Error(`Invalid property (${a}) in property path (${i.join(".")})`)}this._targetPath=i[i.length-1],this._activeTargets[t]=n}else this._targetPath=i[0],this._activeTargets[t]=e;if(this._activeTargets[t][this._targetPath]===void 0)throw new Error(`Invalid property (${this._targetPath}) in property path (${i.join(".")})`)}get animation(){return this._animation}reset(e=!1){if(e)if(this._target instanceof Array){let t=0;for(const i of this._target)this._originalValue[t]!==void 0&&this._setValue(i,this._activeTargets[t],this._originalValue[t],-1,t),t++}else this._originalValue[0]!==void 0&&this._setValue(this._target,this._directTarget,this._originalValue[0],-1,0);this._offsetsCache={},this._highLimitsCache={},this._currentFrame=0,this._blendingFactor=0;for(let t=0;t<this._events.length;t++)this._events[t].isDone=!1}isStopped(){return this._stopped}dispose(){const e=this._animation.runtimeAnimations.indexOf(this);e>-1&&this._animation.runtimeAnimations.splice(e,1)}setValue(e,t){if(this._targetIsArray){for(let i=0;i<this._target.length;i++){const n=this._target[i];this._setValue(n,this._activeTargets[i],e,t,i)}return}this._setValue(this._target,this._directTarget,e,t,0)}_getOriginalValues(e=0){let t;const i=this._activeTargets[e];if(A.InheritOriginalValueFromActiveAnimations){const n=this._scene._activeAnimatables;for(let s=0;s<n.length;s++){const a=n[s]._runtimeAnimations;for(let l=0;l<a.length;l++){const r=a[l];if(r!==this&&r._targetPath===this._targetPath){for(let h=0;h<r._activeTargets.length;h++)if(r._activeTargets[h]===i&&r._originalValue[h]!==void 0){r._originalValue[h]&&r._originalValue[h].clone?this._originalValue[e]=r._originalValue[h].clone():this._originalValue[e]=r._originalValue[h];return}}}}}i.getLocalMatrix&&this._targetPath==="_matrix"?t=i.getLocalMatrix():t=i[this._targetPath],t&&t.clone?this._originalValue[e]=t.clone():this._originalValue[e]=t}_registerTargetForLateAnimationBinding(e,t){const i=e.target;this._scene._registeredForLateAnimationBindings.pushNoDuplicate(i),i._lateAnimationHolders||(i._lateAnimationHolders={}),i._lateAnimationHolders[e.targetPath]||(i._lateAnimationHolders[e.targetPath]={totalWeight:0,totalAdditiveWeight:0,animations:[],additiveAnimations:[],originalValue:t}),e.isAdditive?(i._lateAnimationHolders[e.targetPath].additiveAnimations.push(e),i._lateAnimationHolders[e.targetPath].totalAdditiveWeight+=e.weight):(i._lateAnimationHolders[e.targetPath].animations.push(e),i._lateAnimationHolders[e.targetPath].totalWeight+=e.weight)}_setValue(e,t,i,n,s){if(this._currentActiveTarget=t,this._weight=n,this._enableBlending&&this._blendingFactor<=1){if(!this._originalBlendValue){const l=t[this._targetPath];l.clone?this._originalBlendValue=l.clone():this._originalBlendValue=l}this._originalBlendValue.m?A.AllowMatrixDecomposeForInterpolation?this._currentValue?F.DecomposeLerpToRef(this._originalBlendValue,i,this._blendingFactor,this._currentValue):this._currentValue=F.DecomposeLerp(this._originalBlendValue,i,this._blendingFactor):this._currentValue?F.LerpToRef(this._originalBlendValue,i,this._blendingFactor,this._currentValue):this._currentValue=F.Lerp(this._originalBlendValue,i,this._blendingFactor):this._currentValue=A._UniversalLerp(this._originalBlendValue,i,this._blendingFactor);const a=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.blendingSpeed:this._animation.blendingSpeed;this._blendingFactor+=a}else this._currentValue?this._currentValue.copyFrom?this._currentValue.copyFrom(i):this._currentValue=i:i?.clone?this._currentValue=i.clone():this._currentValue=i;n!==-1?this._registerTargetForLateAnimationBinding(this,this._originalValue[s]):this._animationState.loopMode===A.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT?this._currentValue.addToRef?this._currentValue.addToRef(this._originalValue[s],t[this._targetPath]):t[this._targetPath]=this._originalValue[s]+this._currentValue:t[this._targetPath]=this._currentValue,e.markAsDirty&&e.markAsDirty(this._animation.targetProperty)}_getCorrectLoopMode(){return this._target&&this._target.animationPropertiesOverride?this._target.getClassName?.()==="MorphTarget"&&this._target._animationPropertiesOverride==null?this._animation.loopMode:this._target.animationPropertiesOverride.loopMode:this._animation.loopMode}goToFrame(e,t=-1){const i=this._animation.getKeys();e<i[0].frame?e=i[0].frame:e>i[i.length-1].frame&&(e=i[i.length-1].frame);const n=this._events;if(n.length)for(let a=0;a<n.length;a++)n[a].onlyOnce||(n[a].isDone=n[a].frame<e);this._currentFrame=e;const s=this._animation._interpolate(e,this._animationState);this.setValue(s,t)}_prepareForSpeedRatioChange(e){const t=this._previousElapsedTime*(this._animation.framePerSecond*e)/1e3;this._absoluteFrameOffset=this._previousAbsoluteFrame-t}animate(e,t,i,n,s,a=-1){const l=this._animation,r=l.targetPropertyPath;if(!r||r.length<1)return this._stopped=!0,!1;let h=!0,g;const u=this._events;let c;if(this._coreRuntimeAnimation)c=i-t,g=this._coreRuntimeAnimation.currentFrame,this._currentFrame=g,this._animationState.repeatCount=this._coreRuntimeAnimation._animationState.repeatCount,this._animationState.highLimitValue=this._coreRuntimeAnimation._animationState.highLimitValue,this._animationState.offsetValue=this._coreRuntimeAnimation._animationState.offsetValue;else{(t<this._minFrame||t>this._maxFrame)&&(t=this._minFrame),(i<this._minFrame||i>this._maxFrame)&&(i=this._maxFrame),c=i-t;let _,m=e*(l.framePerSecond*s)/1e3+this._absoluteFrameOffset,b=0,V=!1;const O=n&&this._animationState.loopMode===A.ANIMATIONLOOPMODE_YOYO;if(O){const d=(m-t)/c,p=Math.sin(d*Math.PI);m=Math.abs(p)*c+t;const L=p>=0?1:-1;this._yoyoDirection!==L&&(V=!0),this._yoyoDirection=L}if(this._previousElapsedTime=e,this._previousAbsoluteFrame=m,!n&&i>=t&&(m>=c&&s>0||m<=0&&s<0))h=!1,b=l.evaluate(i);else if(!n&&t>=i&&(m<=c&&s<0||m>=0&&s>0))h=!1,b=l.evaluate(t);else if(this._animationState.loopMode!==A.ANIMATIONLOOPMODE_CYCLE){const d=i.toString()+t.toString();if(!this._offsetsCache[d]){this._animationState.repeatCount=0,this._animationState.loopMode=A.ANIMATIONLOOPMODE_CYCLE;const p=l._interpolate(t,this._animationState),y=l._interpolate(i,this._animationState);switch(this._animationState.loopMode=this._getCorrectLoopMode(),l.dataType){case A.ANIMATIONTYPE_FLOAT:this._offsetsCache[d]=y-p;break;case A.ANIMATIONTYPE_QUATERNION:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_VECTOR3:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_VECTOR2:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_SIZE:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_COLOR3:this._offsetsCache[d]=y.subtract(p);break}this._highLimitsCache[d]=y}b=this._highLimitsCache[d],_=this._offsetsCache[d]}if(_===void 0)switch(l.dataType){case A.ANIMATIONTYPE_FLOAT:_=0;break;case A.ANIMATIONTYPE_QUATERNION:_=K;break;case A.ANIMATIONTYPE_VECTOR3:_=W;break;case A.ANIMATIONTYPE_VECTOR2:_=D;break;case A.ANIMATIONTYPE_SIZE:_=k;break;case A.ANIMATIONTYPE_COLOR3:_=C;break;case A.ANIMATIONTYPE_COLOR4:_=B;break}if(this._host&&this._host.syncRoot){const d=this._host.syncRoot,p=(d.masterFrame-d.fromFrame)/(d.toFrame-d.fromFrame);g=t+c*p}else m>0&&t>i||m<0&&t<i?g=h&&c!==0?i+m%c:t:g=h&&c!==0?t+m%c:i;if(!O&&(s>0&&this.currentFrame>g||s<0&&this.currentFrame<g)||O&&V){this._onLoop();for(let d=0;d<u.length;d++)u[d].onlyOnce||(u[d].isDone=!1);this._animationState.key=s>0?0:l.getKeys().length-1}this._currentFrame=g,this._animationState.repeatCount=c===0?0:m/c>>0,this._animationState.highLimitValue=b,this._animationState.offsetValue=_}const f=l._interpolate(g,this._animationState);if(this.setValue(f,a),u.length){for(let _=0;_<u.length;_++)if(c>=0&&g>=u[_].frame&&u[_].frame>=t||c<0&&g<=u[_].frame&&u[_].frame<=t){const m=u[_];m.isDone||(m.onlyOnce&&(u.splice(_,1),_--),m.isDone=!0,m.action(g))}}return h||(this._stopped=!0),h}}class I{get syncRoot(){return this._syncRoot}get masterFrame(){return this._runtimeAnimations.length===0?0:this._runtimeAnimations[0].currentFrame}get weight(){return this._weight}set weight(e){if(e===-1){this._weight=-1;return}this._weight=Math.min(Math.max(e,0),1)}get speedRatio(){return this._speedRatio}set speedRatio(e){for(let t=0;t<this._runtimeAnimations.length;t++)this._runtimeAnimations[t]._prepareForSpeedRatioChange(e);this._speedRatio=e,this._goToFrame!==null&&this.goToFrame(this._goToFrame)}get elapsedTime(){return this._localDelayOffset===null?0:this._scene._animationTime-this._localDelayOffset}constructor(e,t,i=0,n=100,s=!1,a=1,l,r,h,g=!1,u=0){this.target=t,this.fromFrame=i,this.toFrame=n,this.loopAnimation=s,this.onAnimationEnd=l,this.onAnimationLoop=h,this.isAdditive=g,this.playOrder=u,this._localDelayOffset=null,this._pausedDelay=null,this._manualJumpDelay=null,this._runtimeAnimations=new Array,this._paused=!1,this._speedRatio=1,this._weight=-1,this._previousWeight=-1,this._syncRoot=null,this._frameToSyncFromJump=null,this._goToFrame=null,this.disposeOnEnd=!0,this.animationStarted=!1,this.onAnimationEndObservable=new P,this.onAnimationLoopObservable=new P,this._scene=e,r&&this.appendAnimations(t,r),this._speedRatio=a,e._activeAnimatables.push(this)}syncWith(e){if(this._syncRoot=e,e){const t=this._scene._activeAnimatables.indexOf(this);t>-1&&(this._scene._activeAnimatables.splice(t,1),this._scene._activeAnimatables.push(this))}return this}getAnimations(){return this._runtimeAnimations}appendAnimations(e,t){for(let i=0;i<t.length;i++){const n=t[i],s=new Q(e,n,this._scene,this);s._onLoop=()=>{this.onAnimationLoopObservable.notifyObservers(this),this.onAnimationLoop&&this.onAnimationLoop()},this._runtimeAnimations.push(s)}}getAnimationByTargetProperty(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)if(t[i].animation.targetProperty===e)return t[i].animation;return null}getRuntimeAnimationByTargetProperty(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)if(t[i].animation.targetProperty===e)return t[i];return null}reset(){const e=this._runtimeAnimations;for(let t=0;t<e.length;t++)e[t].reset(!0);this._localDelayOffset=null,this._pausedDelay=null}enableBlending(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)t[i].animation.enableBlending=!0,t[i].animation.blendingSpeed=e}disableBlending(){const e=this._runtimeAnimations;for(let t=0;t<e.length;t++)e[t].animation.enableBlending=!1}goToFrame(e,t=!1){const i=this._runtimeAnimations;if(i[0]){const n=i[0].animation.framePerSecond;this._frameToSyncFromJump=this._frameToSyncFromJump??i[0].currentFrame;const s=this.speedRatio===0?0:(e-this._frameToSyncFromJump)/n*1e3/this.speedRatio;this._manualJumpDelay=-s}for(let n=0;n<i.length;n++)i[n].goToFrame(e,t?this._weight:-1);this._goToFrame=e}get paused(){return this._paused}pause(){this._paused||(this._paused=!0)}restart(){this._paused=!1}_raiseOnAnimationEnd(){this.onAnimationEnd&&this.onAnimationEnd(),this.onAnimationEndObservable.notifyObservers(this)}stop(e,t,i=!1,n=!1){if(e||t){const s=this._scene._activeAnimatables.indexOf(this);if(s>-1){const a=this._runtimeAnimations;for(let l=a.length-1;l>=0;l--){const r=a[l];e&&r.animation.name!=e||t&&!t(r.target)||(r.dispose(),a.splice(l,1))}a.length==0&&(i||this._scene._activeAnimatables.splice(s,1),n||this._raiseOnAnimationEnd())}}else{const s=this._scene._activeAnimatables.indexOf(this);if(s>-1){i||this._scene._activeAnimatables.splice(s,1);const a=this._runtimeAnimations;for(let l=0;l<a.length;l++)a[l].dispose();this._runtimeAnimations.length=0,n||this._raiseOnAnimationEnd()}}}async waitAsync(){return await new Promise(e=>{this.onAnimationEndObservable.add(()=>{e(this)},void 0,void 0,this,!0)})}_animate(e){if(this._paused)return this.animationStarted=!1,this._pausedDelay===null&&(this._pausedDelay=e),!0;if(this._localDelayOffset===null?(this._localDelayOffset=e,this._pausedDelay=null):this._pausedDelay!==null&&(this._localDelayOffset+=e-this._pausedDelay,this._pausedDelay=null),this._manualJumpDelay!==null&&(this._localDelayOffset+=this.speedRatio<0?-this._manualJumpDelay:this._manualJumpDelay,this._manualJumpDelay=null,this._frameToSyncFromJump=null),this._goToFrame=null,!I.ProcessPausedAnimatables&&this._weight===0&&this._previousWeight===0)return!0;this._previousWeight=this._weight;let t=!1;const i=this._runtimeAnimations;let n;for(n=0;n<i.length;n++){const a=i[n].animate(e-this._localDelayOffset,this.fromFrame,this.toFrame,this.loopAnimation,this._speedRatio,this._weight);t=t||a}if(this.animationStarted=t,!t){if(this.disposeOnEnd)for(n=this._scene._activeAnimatables.indexOf(this),this._scene._activeAnimatables.splice(n,1),n=0;n<i.length;n++)i[n].dispose();this._raiseOnAnimationEnd(),this.disposeOnEnd&&(this.onAnimationEnd=null,this.onAnimationLoop=null,this.onAnimationLoopObservable.clear(),this.onAnimationEndObservable.clear())}return t}}I.ProcessPausedAnimatables=!1;function j(o){if(o.totalWeight===0&&o.totalAdditiveWeight===0)return o.originalValue;let e=1;const t=T.Vector3[0],i=T.Vector3[1],n=T.Quaternion[0];let s=0;const a=o.animations[0],l=o.originalValue;let r,h=!1;if(o.totalWeight<1)r=1-o.totalWeight,l.decompose(i,n,t);else{if(s=1,e=o.totalWeight,r=a.weight/e,r==1)if(o.totalAdditiveWeight)h=!0;else return a.currentValue;a.currentValue.decompose(i,n,t)}if(!h){i.scaleInPlace(r),t.scaleInPlace(r),n.scaleInPlace(r);for(let u=s;u<o.animations.length;u++){const c=o.animations[u];if(c.weight===0)continue;r=c.weight/e;const f=T.Vector3[2],_=T.Vector3[3],m=T.Quaternion[1];c.currentValue.decompose(_,m,f),_.scaleAndAddToRef(r,i),m.scaleAndAddToRef(S.Dot(n,m)>0?r:-r,n),f.scaleAndAddToRef(r,t)}n.normalize()}for(let u=0;u<o.additiveAnimations.length;u++){const c=o.additiveAnimations[u];if(c.weight===0)continue;const f=T.Vector3[2],_=T.Vector3[3],m=T.Quaternion[1];c.currentValue.decompose(_,m,f),_.multiplyToRef(i,_),Y.LerpToRef(i,_,c.weight,i),n.multiplyToRef(m,m),S.SlerpToRef(n,m,c.weight,n),f.scaleAndAddToRef(c.weight,t)}const g=a?a._animationState.workValue:T.Matrix[0].clone();return F.ComposeToRef(i,n,t,g),g}function $(o,e){if(o.totalWeight===0&&o.totalAdditiveWeight===0)return e;const t=o.animations[0],i=o.originalValue;let n=e;if(o.totalWeight===0&&o.totalAdditiveWeight>0)n.copyFrom(i);else if(o.animations.length===1){if(S.SlerpToRef(i,t.currentValue,Math.min(1,o.totalWeight),n),o.totalAdditiveWeight===0)return n}else if(o.animations.length>1){let s=1,a,l;if(o.totalWeight<1){const h=1-o.totalWeight;a=[],l=[],a.push(i),l.push(h)}else{if(o.animations.length===2&&(S.SlerpToRef(o.animations[0].currentValue,o.animations[1].currentValue,o.animations[1].weight/o.totalWeight,e),o.totalAdditiveWeight===0))return e;a=[],l=[],s=o.totalWeight}for(let h=0;h<o.animations.length;h++){const g=o.animations[h];a.push(g.currentValue),l.push(g.weight/s)}let r=0;for(let h=0;h<a.length;){if(!h){S.SlerpToRef(a[h],a[h+1],l[h+1]/(l[h]+l[h+1]),e),n=e,r=l[h]+l[h+1],h+=2;continue}r+=l[h],S.SlerpToRef(n,a[h],l[h]/r,n),h++}}for(let s=0;s<o.additiveAnimations.length;s++){const a=o.additiveAnimations[s];a.weight!==0&&(n.multiplyToRef(a.currentValue,T.Quaternion[0]),S.SlerpToRef(n,T.Quaternion[0],a.weight,n))}return n}function Z(o){if(o._registeredForLateAnimationBindings.length){for(let e=0;e<o._registeredForLateAnimationBindings.length;e++){const t=o._registeredForLateAnimationBindings.data[e];for(const i in t._lateAnimationHolders){const n=t._lateAnimationHolders[i],s=n.animations[0],a=n.originalValue;if(a==null)continue;const l=A.AllowMatrixDecomposeForInterpolation&&a.m;let r=t[i];if(l)r=j(n);else if(a.w!==void 0)r=$(n,r||S.Identity());else{let g=0,u=1;const c=s&&s._animationState.loopMode===A.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT;if(n.totalWeight<1)c?r=a.clone?a.clone():a:s&&a.scale?r=a.scale(1-n.totalWeight):s?r=a*(1-n.totalWeight):a.clone?r=a.clone():r=a;else if(s){u=n.totalWeight;const f=s.weight/u;f!==1?s.currentValue.scale?r=s.currentValue.scale(f):r=s.currentValue*f:r=s.currentValue,c&&(r.addToRef?r.addToRef(a,r):r+=a),g=1}for(let f=g;f<n.animations.length;f++){const _=n.animations[f],m=_.weight/u;if(m)_.currentValue.scaleAndAddToRef?_.currentValue.scaleAndAddToRef(m,r):r+=_.currentValue*m;else continue}for(let f=0;f<n.additiveAnimations.length;f++){const _=n.additiveAnimations[f],m=_.weight;if(m)_.currentValue.scaleAndAddToRef?_.currentValue.scaleAndAddToRef(m,r):r+=_.currentValue*m;else continue}}t[i]=r}t._lateAnimationHolders={}}o._registeredForLateAnimationBindings.reset()}}function tt(o,e){e&&(e.prototype.copyAnimationRange=function(t,i,n,s=!1,a=null){this.animations.length===0&&(this.animations.push(new A(this.name,"_matrix",t.animations[0].framePerSecond,A.ANIMATIONTYPE_MATRIX,0)),this.animations[0].setKeys([]));const l=t.animations[0].getRange(i);if(!l)return!1;const r=l.from,h=l.to,g=t.animations[0].getKeys(),u=t.length,c=t.getParent(),f=this.getParent(),_=s&&c&&u&&this.length&&u!==this.length,m=_&&f&&c?f.length/c.length:1,b=s&&!f&&a&&(a.x!==1||a.y!==1||a.z!==1),V=this.animations[0].getKeys();let O,d,p;for(let y=0,L=g.length;y<L;y++)O=g[y],O.frame>=r&&O.frame<=h&&(s?(p=O.value.clone(),_?(d=p.getTranslation(),p.setTranslation(d.scaleInPlace(m))):b&&a?(d=p.getTranslation(),p.setTranslation(d.multiplyInPlace(a))):p=O.value):p=O.value,V.push({frame:O.frame+n,value:p}));return this.animations[0].createRange(i,r+n,h+n),!0}),o&&(o.prototype._animate=function(t){if(!this.animationsEnabled)return;const i=U.Now;if(!this._animationTimeLast){if(this._pendingData.length>0)return;this._animationTimeLast=i}this.deltaTime=t!==void 0?t:this.useConstantAnimationDeltaTime?16:(i-this._animationTimeLast)*this.animationTimeScale,this._animationTimeLast=i;const n=this._activeAnimatables;if(n.length===0)return;this._animationTime+=this.deltaTime;const s=this._animationTime;for(let a=0;a<n.length;a++){const l=n[a];!l._animate(s)&&l.disposeOnEnd&&a--}Z(this)},o.prototype.sortActiveAnimatables=function(){this._activeAnimatables.sort((t,i)=>t.playOrder-i.playOrder)},o.prototype.beginWeightedAnimation=function(t,i,n,s=1,a,l=1,r,h,g,u,c=!1){const f=this.beginAnimation(t,i,n,a,l,r,h,!1,g,u,c);return f.weight=s,f},o.prototype.beginAnimation=function(t,i,n,s,a=1,l,r,h=!0,g,u,c=!1){if(a<0){const _=i;i=n,n=_,a=-a}i>n&&(a=-a),h&&this.stopAnimation(t,void 0,g),r||(r=new I(this,t,i,n,s,a,l,void 0,u,c));const f=g?g(t):!0;if(t.animations&&f&&r.appendAnimations(t,t.animations),t.getAnimatables){const _=t.getAnimatables();for(let m=0;m<_.length;m++)this.beginAnimation(_[m],i,n,s,a,l,r,h,g,u)}return r.reset(),r},o.prototype.beginHierarchyAnimation=function(t,i,n,s,a,l=1,r,h,g=!0,u,c,f=!1){const _=t.getDescendants(i),m=[];m.push(this.beginAnimation(t,n,s,a,l,r,h,g,u,void 0,f));for(const b of _)m.push(this.beginAnimation(b,n,s,a,l,r,h,g,u,void 0,f));return m},o.prototype.beginDirectAnimation=function(t,i,n,s,a,l=1,r,h,g=!1){if(l<0){const c=n;n=s,s=c,l=-l}return n>s&&(l=-l),new I(this,t,n,s,a,l,r,i,h,g)},o.prototype.beginDirectHierarchyAnimation=function(t,i,n,s,a,l,r,h,g,u=!1){const c=t.getDescendants(i),f=[];f.push(this.beginDirectAnimation(t,n,s,a,l,r,h,g,u));for(const _ of c)f.push(this.beginDirectAnimation(_,n,s,a,l,r,h,g,u));return f},o.prototype.getAnimatableByTarget=function(t){for(let i=0;i<this._activeAnimatables.length;i++)if(this._activeAnimatables[i].target===t)return this._activeAnimatables[i];return null},o.prototype.getAllAnimatablesByTarget=function(t){const i=[];for(let n=0;n<this._activeAnimatables.length;n++)this._activeAnimatables[n].target===t&&i.push(this._activeAnimatables[n]);return i},o.prototype.stopAnimation=function(t,i,n){const s=this.getAllAnimatablesByTarget(t);for(const a of s)a.stop(i,n)},o.prototype.stopAllAnimations=function(){if(this._activeAnimatables){for(let t=0;t<this._activeAnimatables.length;t++)this._activeAnimatables[t].stop(void 0,void 0,!0);this._activeAnimatables.length=0}for(const t of this.animationGroups)t.stop()})}let x=!1;function et(){x||(x=!0,tt(H,z))}class it{getClassName(){return"TargetedAnimation"}constructor(e){this.parent=e,this.uniqueId=q.UniqueId}serialize(){const e={};return e.animation=this.animation.serialize(),e.targetId=this.target.id,e.targetUniqueId=this.target.uniqueId,e}}class v{get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this.syncWithMask(!0))}syncWithMask(e=!1){if(!this.mask&&!e){this._numActiveAnimatables=this._targetedAnimations.length;return}this._numActiveAnimatables=0;for(let t=0;t<this._animatables.length;++t){const i=this._animatables[t];!this.mask||this.mask.disabled||this.mask.retainsTarget(i.target.name)?(this._numActiveAnimatables++,i.paused&&i.restart()):i.paused||i.pause()}}removeUnmaskedAnimations(){if(!(!this.mask||this.mask.disabled)){for(let e=0;e<this._animatables.length;++e){const t=this._animatables[e];this.mask.retainsTarget(t.target.name)||(t.stop(),this._animatables.splice(e,1),--e)}for(let e=0;e<this._targetedAnimations.length;e++){const t=this._targetedAnimations[e];this.mask.retainsTarget(t.target.name)||(this._targetedAnimations.splice(e,1),--e)}}}get from(){return this._from}set from(e){if(this._from!==e){this._from=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.fromFrame=this._from}}}get to(){return this._to}set to(e){if(this._to!==e){this._to=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.toFrame=this._to}}}get isStarted(){return this._isStarted}get isPlaying(){return this._isStarted&&!this._isPaused}get speedRatio(){return this._speedRatio}set speedRatio(e){if(this._speedRatio!==e){this._speedRatio=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.speedRatio=this._speedRatio}}}get loopAnimation(){return this._loopAnimation}set loopAnimation(e){if(this._loopAnimation!==e){this._loopAnimation=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.loopAnimation=this._loopAnimation}}}get isAdditive(){return this._isAdditive}set isAdditive(e){if(this._isAdditive!==e){this._isAdditive=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.isAdditive=this._isAdditive}}}get weight(){return this._weight}set weight(e){this._weight!==e&&(this._weight=e,this.setWeightForAllAnimatables(this._weight))}get targetedAnimations(){return this._targetedAnimations}get animatables(){return this._animatables}get children(){return this._targetedAnimations}get playOrder(){return this._playOrder}set playOrder(e){if(this._playOrder!==e&&(this._playOrder=e,this._animatables.length>0)){for(let t=0;t<this._animatables.length;t++)this._animatables[t].playOrder=this._playOrder;this._scene.sortActiveAnimatables()}}get enableBlending(){return this._enableBlending}set enableBlending(e){if(this._enableBlending!==e&&(this._enableBlending=e,e!==null))for(let t=0;t<this._targetedAnimations.length;++t)this._targetedAnimations[t].animation.enableBlending=e}get blendingSpeed(){return this._blendingSpeed}set blendingSpeed(e){if(this._blendingSpeed!==e&&(this._blendingSpeed=e,e!==null))for(let t=0;t<this._targetedAnimations.length;++t)this._targetedAnimations[t].animation.blendingSpeed=e}getLength(e,t){e=e??this._from,t=t??this._to;const i=this.targetedAnimations[0].animation.framePerSecond*this._speedRatio;return(t-e)/i}getScene(){return this._scene}constructor(e,t=null,i=-1,n=0){this.name=e,this._targetedAnimations=new Array,this._animatables=new Array,this._from=Number.MAX_VALUE,this._to=-Number.MAX_VALUE,this._speedRatio=1,this._loopAnimation=!1,this._isAdditive=!1,this._weight=-1,this._playOrder=0,this._enableBlending=null,this._blendingSpeed=null,this._numActiveAnimatables=0,this._shouldStart=!0,this._parentContainer=null,this.onAnimationEndObservable=new P,this.onAnimationLoopObservable=new P,this.onAnimationGroupLoopObservable=new P,this.onAnimationGroupEndObservable=new P,this.onAnimationGroupPauseObservable=new P,this.onAnimationGroupPlayObservable=new P,this.metadata=null,this._mask=null,this._animationLoopFlags=[],this._scene=t||G.LastCreatedScene,this._weight=i,this._playOrder=n,this.uniqueId=this._scene.getUniqueId(),et(),this._scene.addAnimationGroup(this)}addTargetedAnimation(e,t){const i=new it(this);i.animation=e,i.target=t;const n=e.getKeys();return this._from>n[0].frame&&(this._from=n[0].frame),this._to<n[n.length-1].frame&&(this._to=n[n.length-1].frame),this._enableBlending!==null&&(e.enableBlending=this._enableBlending),this._blendingSpeed!==null&&(e.blendingSpeed=this._blendingSpeed),this._targetedAnimations.push(i),this._shouldStart=!0,i}removeTargetedAnimation(e){for(let t=this._targetedAnimations.length-1;t>-1;t--)this._targetedAnimations[t].animation===e&&this._targetedAnimations.splice(t,1)}normalize(e=null,t=null){e==null&&(e=this._from),t==null&&(t=this._to);for(let i=0;i<this._targetedAnimations.length;i++){const s=this._targetedAnimations[i].animation.getKeys(),a=s[0],l=s[s.length-1];if(a.frame>e){const r={frame:e,value:a.value,inTangent:a.inTangent,outTangent:a.outTangent,interpolation:a.interpolation};s.splice(0,0,r)}if(l.frame<t){const r={frame:t,value:l.value,inTangent:l.inTangent,outTangent:l.outTangent,interpolation:l.interpolation};s.push(r)}}return this._from=e,this._to=t,this}_processLoop(e,t,i){e.onAnimationLoop=()=>{this.onAnimationLoopObservable.notifyObservers(t),!this._animationLoopFlags[i]&&(this._animationLoopFlags[i]=!0,this._animationLoopCount++,this._animationLoopCount===this._numActiveAnimatables&&(this.onAnimationGroupLoopObservable.notifyObservers(this),this._animationLoopCount=0,this._animationLoopFlags.length=0))}}start(e=!1,t=1,i,n,s){if(this._isStarted||this._targetedAnimations.length===0)return this;this._loopAnimation=e,this._shouldStart=!1,this._animationLoopCount=0,this._animationLoopFlags.length=0;for(let a=0;a<this._targetedAnimations.length;a++){const l=this._targetedAnimations[a],r=this._scene.beginDirectAnimation(l.target,[l.animation],i!==void 0?i:this._from,n!==void 0?n:this._to,e,t,void 0,void 0,s!==void 0?s:this._isAdditive);r.weight=this._weight,r.playOrder=this._playOrder,r.onAnimationEnd=()=>{this.onAnimationEndObservable.notifyObservers(l),this._checkAnimationGroupEnded(r)},this._processLoop(r,l,a),this._animatables.push(r)}return this.syncWithMask(),this._scene.sortActiveAnimatables(),this._speedRatio=t,this._isStarted=!0,this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}pause(){if(!this._isStarted)return this;this._isPaused=!0;for(let e=0;e<this._animatables.length;e++)this._animatables[e].pause();return this.onAnimationGroupPauseObservable.notifyObservers(this),this}play(e){return this.isStarted&&this._animatables.length&&!this._shouldStart?(e!==void 0&&(this.loopAnimation=e),this.restart()):(this.stop(),this.start(e,this._speedRatio)),this}reset(){if(!this._isStarted)return this.play(),this.goToFrame(0),this.stop(!0),this;for(let e=0;e<this._animatables.length;e++)this._animatables[e].reset();return this}restart(){if(!this._isStarted)return this;for(let e=0;e<this._animatables.length;e++)this._animatables[e].restart();return this.syncWithMask(),this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}stop(e=!1){if(!this._isStarted)return this;const t=this._animatables.slice();for(let n=0;n<t.length;n++)t[n].stop(void 0,void 0,!0,e);let i=0;for(let n=0;n<this._scene._activeAnimatables.length;n++){const s=this._scene._activeAnimatables[n];s._runtimeAnimations.length>0?this._scene._activeAnimatables[i++]=s:e&&this._checkAnimationGroupEnded(s,e)}return this._scene._activeAnimatables.length=i,this._isStarted=!1,this}setWeightForAllAnimatables(e){for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.weight=e}return this}syncAllAnimationsWith(e){for(let t=0;t<this._animatables.length;t++)this._animatables[t].syncWith(e);return this}goToFrame(e,t=!1){if(!this._isStarted)return this;for(let i=0;i<this._animatables.length;i++)this._animatables[i].goToFrame(e,t);return this}getCurrentFrame(){return this.animatables[0]?.masterFrame||0}dispose(){if(this.isStarted&&this.stop(),this._targetedAnimations.length=0,this._animatables.length=0,this._scene.removeAnimationGroup(this),this._parentContainer){const e=this._parentContainer.animationGroups.indexOf(this);e>-1&&this._parentContainer.animationGroups.splice(e,1),this._parentContainer=null}this.onAnimationEndObservable.clear(),this.onAnimationGroupEndObservable.clear(),this.onAnimationGroupPauseObservable.clear(),this.onAnimationGroupPlayObservable.clear(),this.onAnimationLoopObservable.clear(),this.onAnimationGroupLoopObservable.clear()}_checkAnimationGroupEnded(e,t=!1){const i=this._animatables.indexOf(e);i>-1&&this._animatables.splice(i,1),this._animatables.length===this._targetedAnimations.length-this._numActiveAnimatables&&(this._isStarted=!1,t||this.onAnimationGroupEndObservable.notifyObservers(this),this._animatables.length=0)}clone(e,t,i=!1,n=!1){const s=new v(e||this.name,this._scene,this._weight,this._playOrder);s._from=this.from,s._to=this.to,s._speedRatio=this.speedRatio,s._loopAnimation=this.loopAnimation,s._isAdditive=this.isAdditive,s._enableBlending=this.enableBlending,s._blendingSpeed=this.blendingSpeed,s.metadata=this.metadata,s.mask=this.mask;for(const a of this._targetedAnimations)s.addTargetedAnimation(i?a.animation.clone(n):a.animation,t?t(a.target):a.target);return s}serialize(){const e={};e.name=this.name,e.from=this.from,e.to=this.to,e.speedRatio=this.speedRatio,e.loopAnimation=this.loopAnimation,e.isAdditive=this.isAdditive,e.weight=this.weight,e.playOrder=this.playOrder,e.enableBlending=this.enableBlending,e.blendingSpeed=this.blendingSpeed,e.targetedAnimations=[];for(let t=0;t<this.targetedAnimations.length;t++){const i=this.targetedAnimations[t];e.targetedAnimations[t]=i.serialize()}return w&&w.HasTags(this)&&(e.tags=w.GetTags(this)),this.metadata&&(e.metadata=this.metadata),e}getClassName(){return"AnimationGroup"}toString(e){let t="Name: "+this.name;return t+=", type: "+this.getClassName(),e&&(t+=", from: "+this._from,t+=", to: "+this._to,t+=", isStarted: "+this._isStarted,t+=", speedRatio: "+this._speedRatio,t+=", targetedAnimations length: "+this._targetedAnimations.length,t+=", animatables length: "+this._animatables.length),t}}function nt(o,e=!0,t=!1,i){if(o.length===0)return null;i=i??o[0].weight;let n=Number.MAX_VALUE,s=-Number.MAX_VALUE;if(t)for(const l of o)l.from<n&&(n=l.from),l.to>s&&(s=l.to);const a=new v(o[0].name+"_merged",o[0].getScene(),i);for(const l of o){t&&l.normalize(n,s);for(const r of l.targetedAnimations)a.addTargetedAnimation(r.animation,r.target);e&&l.dispose()}return a}function at(o,e,t){const i=new v(o.name,e,o.weight,o.playOrder),n=i;for(let s=0;s<o.targetedAnimations.length;s++){const a=o.targetedAnimations[s],l=J(a.animation),r=t?t(a):a.animation.property==="influence"?e.getMorphTargetById(a.targetId):e.getNodeById(a.targetId);r&&i.addTargetedAnimation(l,r)}return w&&w.AddTagsTo(i,o.tags),o.from!==null&&o.to!==null&&i.normalize(o.from,o.to),o.speedRatio!==void 0&&(n._speedRatio=o.speedRatio),o.loopAnimation!==void 0&&(n._loopAnimation=o.loopAnimation),o.isAdditive!==void 0&&(n._isAdditive=o.isAdditive),o.weight!==void 0&&(n._weight=o.weight),o.playOrder!==void 0&&(n._playOrder=o.playOrder),o.enableBlending!==void 0&&(n._enableBlending=o.enableBlending),o.blendingSpeed!==void 0&&(n._blendingSpeed=o.blendingSpeed),o.metadata!==void 0&&(i.metadata=o.metadata),i}function st(o,e,t,i=!1,n){let s;typeof e=="object"?s=e:s={referenceFrame:e,range:t,cloneOriginalAnimationGroup:i,clonedAnimationName:n};let a=o;s.cloneOriginalAnimationGroup&&(a=o.clone(s.clonedAnimationGroupName||a.name));const l=a.targetedAnimations;for(let r=0;r<l.length;r++){const h=l[r];h.animation=X(h.animation,s)}if(a.isAdditive=!0,s.clipKeys){let r=Number.MAX_VALUE,h=-Number.MAX_VALUE;const g=a.targetedAnimations;for(let c=0;c<g.length;c++){const m=g[c].animation.getKeys();r>m[0].frame&&(r=m[0].frame),h<m[m.length-1].frame&&(h=m[m.length-1].frame)}const u=a;u._from=r,u._to=h}return a}function ot(o,e,t,i,n){const s=o.clone(i||o.name);return E(s,e,t,n)}function E(o,e,t,i){return R(o,e,t,i,!1)}function rt(o,e,t,i,n){const s=o.clone(i||o.name);return N(s,e,t,n)}function N(o,e,t,i){return R(o,e,t,i,!0)}function R(o,e,t,i,n=!1){let s=Number.MAX_VALUE,a=-Number.MAX_VALUE;const l=o.targetedAnimations;for(let h=0;h<l.length;h++){const g=l[h],u=i?g.animation:g.animation.clone();n&&(u.createKeyForFrame(e),u.createKeyForFrame(t));const c=u.getKeys(),f=[];let _=Number.MAX_VALUE;for(let m=0;m<c.length;m++){const b=c[m];if(!n&&m>=e&&m<=t||n&&b.frame>=e&&b.frame<=t){const V={frame:b.frame,value:b.value.clone?b.value.clone():b.value,inTangent:b.inTangent,outTangent:b.outTangent,interpolation:b.interpolation,lockedTangent:b.lockedTangent};_===Number.MAX_VALUE&&(_=V.frame),V.frame-=_,f.push(V)}}if(f.length===0){l.splice(h,1),h--;continue}s>f[0].frame&&(s=f[0].frame),a<f[f.length-1].frame&&(a=f[f.length-1].frame),u.setKeys(f,!0),g.animation=u}const r=o;return r._from=s,r._to=a,o}let M=!1;function lt(){M||(M=!0,v.MergeAnimationGroups=nt,v.Parse=at,v.MakeAnimationAdditive=st,v.ClipKeys=ot,v.ClipKeysInPlace=E,v.ClipFrames=rt,v.ClipFramesInPlace=N,v.ClipInPlace=R)}lt();export{v as AnimationGroup,rt as AnimationGroupClipFrames,N as AnimationGroupClipFramesInPlace,R as AnimationGroupClipInPlace,ot as AnimationGroupClipKeys,E as AnimationGroupClipKeysInPlace,st as AnimationGroupMakeAnimationAdditive,nt as AnimationGroupMergeAnimationGroups,at as AnimationGroupParse,lt as RegisterAnimationGroup,it as TargetedAnimation};
@@ -1,4 +1,4 @@
1
- import{S as e}from"./index-aS20qDZO.js";const t="bonesDeclaration",u=`#if NUM_BONE_INFLUENCERS>0
1
+ import{S as e}from"./index-7lfB9OVT.js";const t="bonesDeclaration",u=`#if NUM_BONE_INFLUENCERS>0
2
2
  #ifndef USE_VERTEX_PULLING
3
3
  attribute matricesIndices : vec4f;attribute matricesWeights : vec4f;
4
4
  #if NUM_BONE_INFLUENCERS>4
@@ -0,0 +1 @@
1
+ import{ay as F,az as U,L as D,x as P}from"./index-7lfB9OVT.js";function R(){const e={cTFETC1:0,cTFETC2:1,cTFBC1:2,cTFBC3:3,cTFBC7:6,cTFPVRTC1_4_RGB:8,cTFPVRTC1_4_RGBA:9,cTFASTC_4x4:10,cTFRGB565:14};let n=null;onmessage=s=>{if(s.data.action==="init"){if(s.data.url)try{importScripts(s.data.url)}catch(o){postMessage({action:"error",error:o})}n||(n=BASIS({wasmBinary:s.data.wasmBinary})),n!==null&&n.then(o=>{BASIS=o,o.initializeBasis(),postMessage({action:"init"})})}else if(s.data.action==="transcode"){const o=s.data.config,a=s.data.imageData,d=new BASIS.BasisFile(a),r=l(d);let f=s.data.ignoreSupportedFormats?null:t(s.data.config,r),p=!1;f===null&&(p=!0,f=r.hasAlpha?e.cTFBC3:e.cTFBC1);let g=!0;d.startTranscoding()||(g=!1);const T=[];for(let m=0;m<r.images.length&&g;m++){const u=r.images[m];if(o.loadSingleImage===void 0||o.loadSingleImage===m){let b=u.levels.length;o.loadMipmapLevels===!1&&(b=1);for(let C=0;C<b;C++){const w=u.levels[C],B=i(d,m,C,f,p);if(!B){g=!1;break}w.transcodedPixels=B,T.push(w.transcodedPixels.buffer)}}}d.close(),d.delete(),p&&(f=-1),g?postMessage({action:"transcode",success:g,id:s.data.id,fileInfo:r,format:f},T):postMessage({action:"transcode",success:g,id:s.data.id})}};function t(s,o){let a=null;return s.supportedCompressionFormats&&(s.supportedCompressionFormats.astc?a=e.cTFASTC_4x4:s.supportedCompressionFormats.bc7?a=e.cTFBC7:s.supportedCompressionFormats.s3tc?a=o.hasAlpha?e.cTFBC3:e.cTFBC1:s.supportedCompressionFormats.pvrtc?a=o.hasAlpha?e.cTFPVRTC1_4_RGBA:e.cTFPVRTC1_4_RGB:s.supportedCompressionFormats.etc2?a=e.cTFETC2:s.supportedCompressionFormats.etc1?a=e.cTFETC1:a=e.cTFRGB565),a}function l(s){const o=s.getHasAlpha(),a=s.getNumImages(),d=[];for(let f=0;f<a;f++){const p={levels:[]},g=s.getNumLevels(f);for(let T=0;T<g;T++){const m={width:s.getImageWidth(f,T),height:s.getImageHeight(f,T)};p.levels.push(m)}d.push(p)}return{hasAlpha:o,images:d}}function i(s,o,a,d,r){const f=s.getImageTranscodedSizeInBytes(o,a,d);let p=new Uint8Array(f);if(!s.transcodeImage(p,o,a,d,1,0))return null;if(r){const g=s.getImageWidth(o,a)+3&-4,T=s.getImageHeight(o,a)+3&-4;p=c(p,0,g,T)}return p}function c(s,o,a,d){const r=new Uint16Array(4),f=new Uint16Array(a*d),p=a/4,g=d/4;for(let T=0;T<g;T++)for(let m=0;m<p;m++){const u=o+8*(T*p+m);r[0]=s[u]|s[u+1]<<8,r[1]=s[u+2]|s[u+3]<<8,r[2]=(2*(r[0]&31)+1*(r[1]&31))/3|(2*(r[0]&2016)+1*(r[1]&2016))/3&2016|(2*(r[0]&63488)+1*(r[1]&63488))/3&63488,r[3]=(2*(r[1]&31)+1*(r[0]&31))/3|(2*(r[1]&2016)+1*(r[0]&2016))/3&2016|(2*(r[1]&63488)+1*(r[0]&63488))/3&63488;for(let b=0;b<4;b++){const C=s[u+4+b];let w=(T*4+b)*a+m*4;f[w++]=r[C&3],f[w++]=r[C>>2&3],f[w++]=r[C>>4&3],f[w]=r[C>>6&3]}}return f}}async function W(e,n,t){return await new Promise((l,i)=>{const c=s=>{s.data.action==="init"?(e.removeEventListener("message",c),l(e)):s.data.action==="error"&&i(s.data.error||"error initializing worker")};e.addEventListener("message",c),e.postMessage({action:"init",url:t?F.GetBabylonScriptURL(t):void 0,wasmBinary:n},[n])})}var h;(function(e){e[e.cTFETC1=0]="cTFETC1",e[e.cTFETC2=1]="cTFETC2",e[e.cTFBC1=2]="cTFBC1",e[e.cTFBC3=3]="cTFBC3",e[e.cTFBC4=4]="cTFBC4",e[e.cTFBC5=5]="cTFBC5",e[e.cTFBC7=6]="cTFBC7",e[e.cTFPVRTC1_4_RGB=8]="cTFPVRTC1_4_RGB",e[e.cTFPVRTC1_4_RGBA=9]="cTFPVRTC1_4_RGBA",e[e.cTFASTC_4x4=10]="cTFASTC_4x4",e[e.cTFATC_RGB=11]="cTFATC_RGB",e[e.cTFATC_RGBA_INTERPOLATED_ALPHA=12]="cTFATC_RGBA_INTERPOLATED_ALPHA",e[e.cTFRGBA32=13]="cTFRGBA32",e[e.cTFRGB565=14]="cTFRGB565",e[e.cTFBGR565=15]="cTFBGR565",e[e.cTFRGBA4444=16]="cTFRGBA4444",e[e.cTFFXT1_RGB=17]="cTFFXT1_RGB",e[e.cTFPVRTC2_4_RGB=18]="cTFPVRTC2_4_RGB",e[e.cTFPVRTC2_4_RGBA=19]="cTFPVRTC2_4_RGBA",e[e.cTFETC2_EAC_R11=20]="cTFETC2_EAC_R11",e[e.cTFETC2_EAC_RG11=21]="cTFETC2_EAC_RG11"})(h||(h={}));const L={JSModuleURL:`${F._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.js`,WasmModuleURL:`${F._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.wasm`},V=(e,n)=>{let t;switch(e){case h.cTFETC1:t=36196;break;case h.cTFBC1:t=33776;break;case h.cTFBC4:t=33779;break;case h.cTFASTC_4x4:t=37808;break;case h.cTFETC2:t=37496;break;case h.cTFBC7:t=36492;break}if(t===void 0)throw"The chosen Basis transcoder format is not currently supported";return t};let G=null,y=null,k=0;const x=!1,H=async()=>(G||(G=new Promise((e,n)=>{y?e(y):F.LoadFileAsync(F.GetBabylonScriptURL(L.WasmModuleURL)).then(t=>{if(typeof URL!="function")return n("Basis transcoder requires an environment with a URL constructor");const l=URL.createObjectURL(new Blob([`(${R})()`],{type:"application/javascript"}));y=new Worker(l),W(y,t,L.JSModuleURL).then(e,n)}).catch(n)})),await G),_=async(e,n)=>{const t=e instanceof ArrayBuffer?new Uint8Array(e):e;return await new Promise((l,i)=>{H().then(()=>{const c=k++,s=a=>{a.data.action==="transcode"&&a.data.id===c&&(y.removeEventListener("message",s),a.data.success?l(a.data):i("Transcode is not supported on this device"))};y.addEventListener("message",s);const o=new Uint8Array(t.byteLength);o.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),y.postMessage({action:"transcode",id:c,imageData:o,config:n,ignoreSupportedFormats:x},[o.buffer])},c=>{i(c)})})},E=(e,n)=>{let t=n._gl?.TEXTURE_2D;e.isCube&&(t=n._gl?.TEXTURE_CUBE_MAP),n._bindTextureDirectly(t,e,!0)},v=(e,n)=>{const t=e.getEngine();for(let l=0;l<n.fileInfo.images.length;l++){const i=n.fileInfo.images[l].levels[0];if(e._invertVScale=e.invertY,n.format===-1||n.format===h.cTFRGB565)if(e.type=10,e.format=4,t._features.basisNeedsPOT&&(Math.log2(i.width)%1!==0||Math.log2(i.height)%1!==0)){const c=new U(t,2);e._invertVScale=e.invertY,c.type=10,c.format=4,c.width=i.width+3&-4,c.height=i.height+3&-4,E(c,t),t._uploadDataToTextureDirectly(c,new Uint16Array(i.transcodedPixels.buffer),l,0,4,!0),t._rescaleTexture(c,e,t.scenes[0],t._getInternalFormat(4),()=>{t._releaseTexture(c),E(e,t)})}else e._invertVScale=!e.invertY,e.width=i.width+3&-4,e.height=i.height+3&-4,e.samplingMode=2,E(e,t),t._uploadDataToTextureDirectly(e,new Uint16Array(i.transcodedPixels.buffer),l,0,4,!0);else{e.width=i.width,e.height=i.height,e.generateMipMaps=n.fileInfo.images[l].levels.length>1;const c=z.GetInternalFormatFromBasisFormat(n.format,t);e.format=c,E(e,t);const s=n.fileInfo.images[l].levels;for(let o=0;o<s.length;o++){const a=s[o];t._uploadCompressedDataToTextureDirectly(e,c,a.width,a.height,a.transcodedPixels,l,o)}t._features.basisNeedsPOT&&(Math.log2(e.width)%1!==0||Math.log2(e.height)%1!==0)&&(D.Warn("Loaded .basis texture width and height are not a power of two. Texture wrapping will be set to Texture.CLAMP_ADDRESSMODE as other modes are not supported with non power of two dimensions in webGL 1."),e._cachedWrapU=P.CLAMP_ADDRESSMODE,e._cachedWrapV=P.CLAMP_ADDRESSMODE)}}},z={JSModuleURL:L.JSModuleURL,WasmModuleURL:L.WasmModuleURL,GetInternalFormatFromBasisFormat:V,TranscodeAsync:_,LoadTextureFromTranscodeResult:v};class X{constructor(){this.supportCascades=!1}loadCubeData(n,t,l,i,c){if(Array.isArray(n))return;const s=t.getEngine().getCaps(),o={supportedCompressionFormats:{etc1:!!s.etc1,s3tc:!!s.s3tc,pvrtc:!!s.pvrtc,etc2:!!s.etc2,astc:!!s.astc,bc7:!!s.bptc}};_(n,o).then(a=>{const d=a.fileInfo.images[0].levels.length>1&&t.generateMipMaps;v(t,a),t.getEngine()._setCubeMapTextureParams(t,d),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),i&&i()}).catch(a=>{F.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),t.isReady=!0,c&&c(a)})}loadData(n,t,l){const i=t.getEngine().getCaps(),c={supportedCompressionFormats:{etc1:!!i.etc1,s3tc:!!i.s3tc,pvrtc:!!i.pvrtc,etc2:!!i.etc2,astc:!!i.astc,bc7:!!i.bptc}};_(n,c).then(s=>{const o=s.fileInfo.images[0].levels[0],a=s.fileInfo.images[0].levels.length>1&&t.generateMipMaps;l(o.width,o.height,a,s.format!==-1,()=>{v(t,s)})}).catch(s=>{F.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),F.Warn(`Failed to transcode Basis file: ${s}`),l(0,0,!1,!1,()=>{},!0)})}}export{X as _BasisTextureLoader};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./rgbdDecode.fragment-CZ0YDY_n.js","./index-7lfB9OVT.js","./index-RTvTYIuN.css","./helperFunctions-CWukOwfP.js","./rgbdEncode.fragment-BZwLt2Lj.js","./rgbdEncode.fragment-BCNu9Cbk.js"])))=>i.map(i=>d[i]);
2
+ import{w as v,A as o,P as M,x as Q}from"./index-7lfB9OVT.js";class r{static ExpandRGBDTexture(f){const A=f._texture;if(!A||!f.isRGBD)return;const w=A.getEngine(),e=w.getCaps(),H=A.isReady;let g=!1;e.textureHalfFloatRender&&e.textureHalfFloatLinearFiltering?(g=!0,A.type=2):e.textureFloatRender&&e.textureFloatLinearFiltering&&(g=!0,A.type=1),g&&(A.isReady=!1,A._isRGBD=!1,A.invertY=!1);const P=async()=>{const C=w.isWebGPU,n=C?1:0;A.isReady=!1,C?await v(()=>import("./rgbdDecode.fragment-CZ0YDY_n.js"),__vite__mapDeps([0,1,2,3]),import.meta.url):await v(()=>import("./index-7lfB9OVT.js").then(I=>I.cN),__vite__mapDeps([1,2]),import.meta.url);const D=new M("rgbdDecode","rgbdDecode",null,null,1,null,3,w,!1,void 0,A.type,void 0,null,!1,void 0,n);D.externalTextureSamplerBinding=!0;const G=w.createRenderTargetTexture(A.width,{generateDepthBuffer:!1,generateMipMaps:!1,generateStencilBuffer:!1,samplingMode:A.samplingMode,type:A.type,format:5});D.onEffectCreatedObservable.addOnce(I=>{I.executeWhenCompiled(()=>{D.onApply=t=>{t._bindTexture("textureSampler",A),t.setFloat2("scale",1,1)},f.getScene().postProcessManager.directRender([D],G,!0),w.restoreDefaultFramebuffer(),w._releaseTexture(A),D&&D.dispose(),G._swapAndDie(A),A.isReady=!0})})};g&&(H?P():f.onLoadObservable.addOnce(P))}static async EncodeTextureToRGBD(f,A,w=0){return A.getEngine().isWebGPU?await v(()=>import("./rgbdEncode.fragment-BZwLt2Lj.js"),__vite__mapDeps([4,1,2,3]),import.meta.url):await v(()=>import("./rgbdEncode.fragment-BCNu9Cbk.js"),__vite__mapDeps([5,1,2]),import.meta.url),await o("rgbdEncode",f,A,w,1,5)}}const s="data:image/png;base64,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",F="data:image/png;base64,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",L="data:image/png;base64,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";let z=0;const E=(B,f,A,w)=>{if(!B[A]){const e=B.useDelayedTextureLoading;B.useDelayedTextureLoading=!1;const H=B._blockEntityCollection;B._blockEntityCollection=!1;const g=Q.CreateFromBase64String(f,w+z++,B,!0,!1,Q.BILINEAR_SAMPLINGMODE);B._blockEntityCollection=H;const P=B.getEngine().getLoadedTexturesCache(),C=P.indexOf(g.getInternalTexture());C!==-1&&P.splice(C,1),g.isRGBD=!0,g.wrapU=Q.CLAMP_ADDRESSMODE,g.wrapV=Q.CLAMP_ADDRESSMODE,B[A]=g,B.useDelayedTextureLoading=e,r.ExpandRGBDTexture(g);const n=B.getEngine().onContextRestoredObservable.add(()=>{g.isRGBD=!0;const D=B.onBeforeRenderObservable.add(()=>{g.isReady()&&(B.onBeforeRenderObservable.remove(D),r.ExpandRGBDTexture(g))})});B.onDisposeObservable.add(()=>{B.getEngine().onContextRestoredObservable.remove(n)})}return B[A]},d=B=>E(B,s,"environmentBRDFTexture","EnvironmentBRDFTexture"),X=B=>E(B,F,"environmentFuzzBRDFTexture","EnvironmentFuzzBRDFTexture"),x=B=>E(B,L,"openPBREnvironmentBRDFTexture","OpenPBREnvironmentBRDFTexture");export{x as G,X as a,d as b};
@@ -1,4 +1,4 @@
1
- import{S as a}from"./index-aS20qDZO.js";import"./reflectionFunction-FOkl7zGy.js";const e="bumpFragmentMainFunctions",f=`#ifndef TEXRD_DEFINED
1
+ import{S as a}from"./index-7lfB9OVT.js";import"./reflectionFunction-BNJZZ7JO.js";const e="bumpFragmentMainFunctions",f=`#ifndef TEXRD_DEFINED
2
2
  fn TEXRD(t: texture_2d<f32>,ts: sampler,uv: vec2f)->vec4f {return textureSample(t,ts,uv);}
3
3
  #define TEXRD_DEFINED
4
4
  #endif
@@ -1,4 +1,4 @@
1
- import{S as t}from"./index-aS20qDZO.js";const e="bumpVertex",n=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC)
1
+ import{S as t}from"./index-7lfB9OVT.js";const e="bumpVertex",n=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC)
2
2
  #if defined(TANGENT) && defined(NORMAL)
3
3
  var tbnNormal: vec3f=normalize(normalUpdated);var tbnTangent: vec3f=normalize(tangentUpdated.xyz);var tbnBitangent: vec3f=cross(tbnNormal,tbnTangent)*tangentUpdated.w;var matTemp= mat3x3f(finalWorld[0].xyz,finalWorld[1].xyz,finalWorld[2].xyz)* mat3x3f(tbnTangent,tbnBitangent,tbnNormal);vertexOutputs.vTBN0=matTemp[0];vertexOutputs.vTBN1=matTemp[1];vertexOutputs.vTBN2=matTemp[2];
4
4
  #endif