python-cad-tools 0.1.16__tar.gz → 0.1.17__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 (277) hide show
  1. {python_cad_tools-0.1.16/src/python_cad_tools.egg-info → python_cad_tools-0.1.17}/PKG-INFO +1 -1
  2. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/docs/public-api.md +7 -1
  3. python_cad_tools-0.1.17/docs/spikes/curved-geometry-ifc-bounds.md +171 -0
  4. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/_viewer_static/app.webmanifest +2 -2
  5. python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/asset-manifest.json +1 -0
  6. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/animationGroup-d5_0GqzW.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/animationGroup-CMgMiFPo.js +1 -1
  7. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/bakedVertexAnimation-BTnhNnCG.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/bakedVertexAnimation-BlpwZEna.js +1 -1
  8. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/basisTextureLoader-B1WedbgE.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/basisTextureLoader-pxgVvwE7.js +1 -1
  9. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/brdfTextureTools-DIdTXZSR.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/brdfTextureTools-CL1Nnrm1.js +2 -2
  10. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/bumpFragment-C_S7LReC.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/bumpFragment-BNBjNOnF.js +1 -1
  11. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/bumpVertex-9p8w1w7z.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/bumpVertex-BTawYPw8.js +1 -1
  12. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/bumpVertexDeclaration-B8rpdm3U.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/bumpVertexDeclaration-B_fffQFY.js +1 -1
  13. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/clipPlaneFragment-A-1cS0Wr.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/clipPlaneFragment-D1ZAafqO.js +1 -1
  14. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/clipPlaneVertex-B34pEy_z.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/clipPlaneVertex-BC_wnvpq.js +1 -1
  15. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/cubemapToSphericalPolynomial-BAw8ctMB.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/cubemapToSphericalPolynomial-DeA9LJ87.js +1 -1
  16. python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/dds-C5zm4fz8.js +1 -0
  17. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/dds.pure-D_Zw5OEt.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/dds.pure-B_7lJeYI.js +1 -1
  18. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/ddsTextureLoader-DeQLZozV.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/ddsTextureLoader-DsS5rL5j.js +1 -1
  19. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/default.fragment-BI3GAR2C.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/default.fragment-BUHDudIn.js +1 -1
  20. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/default.vertex-CQ4MILUZ.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/default.vertex-B80Wq2Ab.js +1 -1
  21. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/defaultUboDeclaration-DOBRS3iS.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/defaultUboDeclaration-DuGcl3VN.js +1 -1
  22. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/dumpTools-DCMMRWtL.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/dumpTools-1F1Rx0a0.js +2 -2
  23. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/envTextureLoader-C-7LpDe_.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/envTextureLoader-DqI1ceC5.js +1 -1
  24. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/exrTextureLoader-oNqXrLmH.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/exrTextureLoader-DmNwF2B5.js +1 -1
  25. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphApplyForceBlock-DUMH2798.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphApplyForceBlock-DmvfeucL.js +1 -1
  26. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphApplyImpulseBlock-DUvs7iqs.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphApplyImpulseBlock-ChgIpPqh.js +1 -1
  27. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphArrayIndexBlock-B-qeUHG6.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphArrayIndexBlock-_JwXSrlj.js +1 -1
  28. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphBezierCurveEasingBlock-Cjm4_L1J.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphBezierCurveEasingBlock-B-T0qVRw.js +1 -1
  29. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphBinaryOperationBlock-CXnNy9QR.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphBinaryOperationBlock-TpZm5BfV.js +1 -1
  30. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphBranchBlock-DLUVB1dZ.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphBranchBlock-CNwAs8cP.js +1 -1
  31. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphCachedOperationBlock-BkfdjQtr.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphCachedOperationBlock-DaEYpjja.js +1 -1
  32. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphCancelDelayBlock-DwzbjNTQ.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphCancelDelayBlock-Dc4RKYSf.js +1 -1
  33. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphCodeExecutionBlock-CzFaSgik.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphCodeExecutionBlock-DCxeE8wr.js +1 -1
  34. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphConditionalDataBlock-DsMUDoGH.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphConditionalDataBlock-TckZ2SGl.js +1 -1
  35. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphConsoleLogBlock-CVWywmBY.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphConsoleLogBlock-B5e69wX5.js +1 -1
  36. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphConstantBlock-BNIgu4QC.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphConstantBlock-3ktOI1lC.js +1 -1
  37. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphContextBlock-DuQCYIgK.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphContextBlock-XTBtETD_.js +1 -1
  38. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphCounterBlock-DxCqjQc8.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphCounterBlock-Pb64y9OD.js +1 -1
  39. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphDataSwitchBlock-BOncXvGP.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphDataSwitchBlock-DsG4QDCF.js +1 -1
  40. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphDebounceBlock-43eNp_3W.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphDebounceBlock-B_XjPDoZ.js +1 -1
  41. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphDebugBlock-CYRuaSbJ.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphDebugBlock-CD6lTvpS.js +1 -1
  42. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphDoNBlock-Du-7uIwS.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphDoNBlock-0NvER8W0.js +1 -1
  43. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphEasingBlock-C6lQQb9c.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphEasingBlock-B6hapywt.js +1 -1
  44. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphFlipFlopBlock-Ba-WebLx.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphFlipFlopBlock-D1uyBOpq.js +1 -1
  45. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphForLoopBlock-CC4ZykmE.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphForLoopBlock-BYD81Gof.js +1 -1
  46. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphFunctionReferenceBlock-Cc8odCYm.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphFunctionReferenceBlock-zABkEq-X.js +1 -1
  47. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphGLTFDataProvider-Bs8eI-tc.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphGLTFDataProvider-B0ofoVrD.js +1 -1
  48. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphGetAngularVelocityBlock-BR2ioMLJ.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphGetAngularVelocityBlock-DPTUNnTb.js +1 -1
  49. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphGetAssetBlock-DD4Eo4N8.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphGetAssetBlock-B8_99mSz.js +1 -1
  50. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphGetLinearVelocityBlock-CiXY_22u.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphGetLinearVelocityBlock-DFYXgPrA.js +1 -1
  51. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphGetPhysicsMassPropertiesBlock-BFuYrykd.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphGetPhysicsMassPropertiesBlock-DA6AqPR7.js +1 -1
  52. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphGetPropertyBlock-yylHk0Tj.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphGetPropertyBlock-Bp4o9QmW.js +1 -1
  53. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphGetSoundVolumeBlock-Yoy3NMR4.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphGetSoundVolumeBlock-BAmdegmU.js +1 -1
  54. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphGetVariableBlock-DP0lG6uk.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphGetVariableBlock-Cd8Y6leR.js +1 -1
  55. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphIndexOfBlock-Dp46lAXL.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphIndexOfBlock-CGYxKZZY.js +1 -1
  56. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphInterpolationBlock-DAAojSot.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphInterpolationBlock-CwjeWPr7.js +1 -1
  57. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphIsKeyPressedBlock-BzyaFJtY.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphIsKeyPressedBlock-rNAEqrST.js +1 -1
  58. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphIsSoundPlayingBlock-4qIsPViO.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphIsSoundPlayingBlock-BTztAQ_0.js +1 -1
  59. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphJsonPointerParserBlock-BZG5ehwx.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphJsonPointerParserBlock-DoLWKXUb.js +1 -1
  60. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphKeyDownEventBlock-rpKm7KQS.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphKeyDownEventBlock-DPIi37WK.js +1 -1
  61. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphKeyUpEventBlock-DZ0cYho3.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphKeyUpEventBlock-ZV1Tim4d.js +1 -1
  62. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphKeyboardEventBlock-CiAmYMbH.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphKeyboardEventBlock-ClUSFYDa.js +1 -1
  63. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphMathBlocks-CbJDlFUY.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphMathBlocks-BEiYY5fC.js +1 -1
  64. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphMathCombineExtractBlocks-DICrYBP4.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphMathCombineExtractBlocks-CVfFjT4m.js +1 -1
  65. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphMatrixMathBlocks-ftOIDo5d.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphMatrixMathBlocks-B6l0dCDc.js +1 -1
  66. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphMeshPickEventBlock-DTChczhf.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphMeshPickEventBlock-kdpuo1mU.js +1 -1
  67. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphMultiGateBlock-DdupWV9J.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphMultiGateBlock-n99NMOON.js +1 -1
  68. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphPauseAnimationBlock-DBsgO-6v.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphPauseAnimationBlock-DXKPP4nK.js +1 -1
  69. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphPauseSoundBlock-DWcr1ULl.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphPauseSoundBlock-e2k4W8Bc.js +1 -1
  70. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphPhysicsCollisionEventBlock-CVKDMyoo.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphPhysicsCollisionEventBlock-ClgKwXfJ.js +1 -1
  71. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphPlayAnimationBlock-BXVH0aEG.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphPlayAnimationBlock-BZj6MNgX.js +1 -1
  72. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphPlaySoundBlock-LNU38ZaS.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphPlaySoundBlock-BnzlrpjK.js +1 -1
  73. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphPointerDownEventBlock-L9Wzp4sm.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphPointerDownEventBlock-CQiX1RZi.js +1 -1
  74. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphPointerMoveEventBlock-Cgf9rHw2.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphPointerMoveEventBlock-B_JzBfd9.js +1 -1
  75. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOutEventBlock-0bOFbyCB.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOutEventBlock-B-xKCRP6.js +1 -1
  76. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOverEventBlock-CJQEfL96.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOverEventBlock-DPC5GKft.js +1 -1
  77. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphPointerUpEventBlock-Dr4yXdtL.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphPointerUpEventBlock-hCR14WZY.js +1 -1
  78. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphReceiveCustomEventBlock-DpKjQPwo.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphReceiveCustomEventBlock-EOc5SmbK.js +1 -1
  79. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSceneReadyEventBlock-CTK4Ndci.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSceneReadyEventBlock-BAOJ-S5R.js +1 -1
  80. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSceneTickEventBlock-CzJbobbg.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSceneTickEventBlock-BJla1nDw.js +1 -1
  81. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSendCustomEventBlock-DBQ1n5eJ.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSendCustomEventBlock-CbJzCBSw.js +1 -1
  82. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSequenceBlock-oBhLC7Vj.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSequenceBlock-C0E5Vhwk.js +1 -1
  83. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSetAngularVelocityBlock-DXlS3umF.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSetAngularVelocityBlock-Crx1sltA.js +1 -1
  84. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSetDelayBlock-DhrCI14Z.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSetDelayBlock-t-D4JM8I.js +1 -1
  85. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSetLinearVelocityBlock-DdNE9BcN.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSetLinearVelocityBlock-DKNa-lhN.js +1 -1
  86. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSetPhysicsMotionTypeBlock-Be7qTZ0l.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSetPhysicsMotionTypeBlock-BIeMWJwi.js +1 -1
  87. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSetPropertyBlock-Bx8fCC87.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSetPropertyBlock-CFERwfo5.js +1 -1
  88. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSetSoundVolumeBlock-Bmh5show.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSetSoundVolumeBlock-B8fGBso9.js +1 -1
  89. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSetVariableBlock-BP87cysh.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSetVariableBlock-D3NUXLsU.js +1 -1
  90. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSoundEndedEventBlock-DPK4HFJ5.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSoundEndedEventBlock-BsojQIIQ.js +1 -1
  91. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphStopAnimationBlock-9n5l3RYF.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphStopAnimationBlock-Bhvi4mzM.js +1 -1
  92. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphStopSoundBlock-BkqUQ3IX.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphStopSoundBlock-BL-vDlPP.js +1 -1
  93. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphSwitchBlock-CzYmr0Rg.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphSwitchBlock-q5uox2Ll.js +1 -1
  94. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphThrottleBlock-C72DA8Ot.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphThrottleBlock-ZvIobaF-.js +1 -1
  95. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphTransformCoordinatesSystemBlock-B57atF6V.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphTransformCoordinatesSystemBlock-DC7IZTrj.js +1 -1
  96. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphTypeToTypeBlocks-BwO8ctcl.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphTypeToTypeBlocks-DsmLuQmd.js +1 -1
  97. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphUnaryOperationBlock-B5xQ7raL.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphUnaryOperationBlock-CeFOvM8N.js +1 -1
  98. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphVectorMathBlocks-BSQ0Jp6s.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphVectorMathBlocks-O_o0PB3R.js +1 -1
  99. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphWaitAllBlock-DkjMKncY.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphWaitAllBlock-CS8S_sto.js +1 -1
  100. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/flowGraphWhileLoopBlock-DiDLbXDS.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/flowGraphWhileLoopBlock-BogzY-TI.js +1 -1
  101. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/fogFragment-QU9YOYuH.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/fogFragment-5iY5mDF9.js +1 -1
  102. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-EGwqbpHv.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-CzELCfrg.js +1 -1
  103. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-CBvJqSQF.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-Dm4qQcCl.js +1 -1
  104. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-CG3O4l2t.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-Dl5Knagi.js +1 -1
  105. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-CYV0OcvY.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-gV6NfBr2.js +1 -1
  106. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-s8IsAoDR.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-BU7N8GWm.js +1 -1
  107. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-DU77eH5y.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-BYh0LKwp.js +1 -1
  108. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-Bt1AWZNn.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-DGCqlu5B.js +1 -1
  109. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-luoOzTyP.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-DPRpU6I6.js +1 -1
  110. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-xDMDxXMl.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-D6831_Db.js +1 -1
  111. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-m9aQdgcg.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-DVVqYQkj.js +1 -1
  112. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/geometry.fragment-C_-6JJr4.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/geometry.fragment-CJ5P29rW.js +1 -1
  113. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/geometry.fragment-oisMFtj8.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/geometry.fragment-eMPAGW-C.js +1 -1
  114. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/geometry.vertex-CBkXTBVF.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/geometry.vertex-Cfmd-eH1.js +1 -1
  115. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/geometry.vertex-DQDqvDk5.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/geometry.vertex-D8aj2PHd.js +1 -1
  116. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/glowBlurPostProcess.fragment-QolNMgw6.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/glowBlurPostProcess.fragment-BNUj6Ok4.js +1 -1
  117. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.fragment-DRwn6uC2.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.fragment-BMfCbDSO.js +1 -1
  118. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.vertex-BPPwu0E9.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.vertex-HFoIGtvW.js +1 -1
  119. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/glowMapMerge.fragment-ODjisfEL.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/glowMapMerge.fragment-DcbXX8O5.js +1 -1
  120. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/glowMapMerge.vertex-DB7eIwXj.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/glowMapMerge.vertex-C6kfp5Df.js +1 -1
  121. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/harmonicsFunctions-B2jlXPLE.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/harmonicsFunctions-B_Rux4W4.js +1 -1
  122. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/helperFunctions-B6Z1LJrO.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/helperFunctions-DfEEUVrK.js +1 -1
  123. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/iesTextureLoader-8wFKF-ak.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/iesTextureLoader-DRIv8q-c.js +1 -1
  124. python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/index-Bi_hQlRi.css +1 -0
  125. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/index-BnAaL7KS.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/index-QUv88KPb.js +13 -13
  126. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-DmepFK-C.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-AIxPvzg7.js +1 -1
  127. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-C0PAazdd.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-B-fzpNXl.js +1 -1
  128. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-CQTyg7d5.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-BeCpz_iB.js +1 -1
  129. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-C_mnrqaY.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-LF_ZsFNn.js +1 -1
  130. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-DCLBcYIA.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-0MaBFn29.js +1 -1
  131. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-DuoJgAZp.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-CKf1P4fb.js +1 -1
  132. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/ktxTextureLoader-CIypOERT.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/ktxTextureLoader-tKPsUacI.js +1 -1
  133. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/lightFragment-BinX63GB.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/lightFragment-k2nRX45x.js +1 -1
  134. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/logDepthDeclaration-D8jcsZiW.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/logDepthDeclaration-BGXXcOUJ.js +1 -1
  135. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/logDepthVertex-CAoFmcco.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/logDepthVertex-BC72KyzN.js +1 -1
  136. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/mainUVVaryingDeclaration-oF31v9Zp.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/mainUVVaryingDeclaration-BCMZuxRE.js +1 -1
  137. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/meshUboDeclaration-BXrkHWWW.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/meshUboDeclaration-Cxk75_zo.js +1 -1
  138. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/oitFragment-2x3JPdq6.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/oitFragment-BtwWIihL.js +1 -1
  139. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-CpT08ThE.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-8rnUKL54.js +1 -1
  140. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-B5ZDpeFy.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-C6yWZfQI.js +1 -1
  141. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-DAeXubyL.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-DGh-kC4B.js +1 -1
  142. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-BaGhkjmV.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-DbnVIs8Y.js +1 -1
  143. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/openpbrMaterial.pure-BXY_lClt.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/openpbrMaterial.pure-CFHhabYh.js +3 -3
  144. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/openpbrMaterialLoadingAdapter-MpirTHMd.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/openpbrMaterialLoadingAdapter-BQGAj-f6.js +2 -2
  145. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-CHHhh58w.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-BMK7l2Ba.js +1 -1
  146. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-DthxrR9-.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-DNsGu5u0.js +1 -1
  147. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-CXcZlREH.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-Cd1JAAAL.js +1 -1
  148. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration--Zhq0q7d.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-rBzbf9n3.js +1 -1
  149. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/packingFunctions-Bo_ikKLB.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/packingFunctions-Dji1Rr-b.js +1 -1
  150. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/packingFunctions-u3uWRkpF.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/packingFunctions-_goA4OEm.js +1 -1
  151. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/pass.fragment-slK02MnO.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/pass.fragment-CgGToehX.js +1 -1
  152. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/passCube.fragment-DnuA3v4l.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/passCube.fragment-CqqQ20XF.js +1 -1
  153. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/passCube.fragment-C13WHRV7.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/passCube.fragment-D93dlgjG.js +1 -1
  154. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/pbr.fragment-8v2GDfO1.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/pbr.fragment-YSvcDJjz.js +1 -1
  155. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/pbr.vertex-BuCPFkDX.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/pbr.vertex-BOhSAeHX.js +1 -1
  156. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/pbrBRDFFunctions-5nHUuKRr.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/pbrBRDFFunctions-DTEwurLZ.js +1 -1
  157. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/pbrDebug-C8fLVEpD.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/pbrDebug-B4IzJZHZ.js +1 -1
  158. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/pbrIBLFunctions-BM49sbQB.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/pbrIBLFunctions-gJ0KErMb.js +1 -1
  159. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/pbrMaterial.pure-B6n6Ic80.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/pbrMaterial.pure-BRIxFz02.js +2 -2
  160. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/pbrMaterialLoadingAdapter-C0d04FRz.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/pbrMaterialLoadingAdapter--NRrZRBU.js +1 -1
  161. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/pbrUboDeclaration-CL7R5LTR.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/pbrUboDeclaration-6dxbcrtA.js +1 -1
  162. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/postprocess.vertex-BhCyZbyQ.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/postprocess.vertex-ZxthID8t.js +1 -1
  163. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/procedural.vertex-W-IcNTXE.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/procedural.vertex-BSVnGss-.js +1 -1
  164. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/procedural.vertex-Cb5DsSFx.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/procedural.vertex-DzIg_d-k.js +1 -1
  165. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/reflectionFunction-DYrae64q.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/reflectionFunction-CgKY-0t6.js +1 -1
  166. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/rgbdDecode.fragment-CFpIpdxk.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/rgbdDecode.fragment-CAfeJDpQ.js +1 -1
  167. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-BIBfrJET.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-D7xEO0B-.js +1 -1
  168. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-yPbrkGKz.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-DIzz0LC4.js +1 -1
  169. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/sceneUboDeclaration-D5YHSknt.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/sceneUboDeclaration-kGrRDglr.js +1 -1
  170. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-GSzJSZKX.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-CgQTw0M7.js +1 -1
  171. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-NwUMt_sy.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-DnEEx4Gs.js +1 -1
  172. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/tgaTextureLoader-Z9HWdnv1.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/tgaTextureLoader-CwaQqeYn.js +1 -1
  173. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/vertexColorMixing-DkZl_JUT.js → python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/assets/vertexColorMixing-C2cK_vck.js +1 -1
  174. python_cad_tools-0.1.17/src/python_cad_tools/_viewer_static/favicon.svg +43 -0
  175. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/_viewer_static/index.html +4 -4
  176. python_cad_tools-0.1.17/src/python_cad_tools/build-info.json +1 -0
  177. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/geometry.py +15 -0
  178. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/manifests.py +12 -0
  179. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17/src/python_cad_tools.egg-info}/PKG-INFO +1 -1
  180. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools.egg-info/SOURCES.txt +169 -168
  181. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools.egg-info/scm_file_list.json +170 -168
  182. python_cad_tools-0.1.17/src/python_cad_tools.egg-info/scm_version.json +8 -0
  183. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/asset-manifest.json +0 -1
  184. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/dds-BDxArwXs.js +0 -1
  185. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/assets/index-CnrKUEff.css +0 -1
  186. python_cad_tools-0.1.16/src/python_cad_tools/_viewer_static/favicon.svg +0 -10
  187. python_cad_tools-0.1.16/src/python_cad_tools/build-info.json +0 -1
  188. python_cad_tools-0.1.16/src/python_cad_tools.egg-info/scm_version.json +0 -8
  189. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/.gitattributes +0 -0
  190. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/.githooks/pre-push +0 -0
  191. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/.github/workflows/ci.yml +0 -0
  192. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/.github/workflows/downstream-compatibility.yml +0 -0
  193. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/.github/workflows/release-candidate.yml +0 -0
  194. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/.github/workflows/release.yml +0 -0
  195. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/.gitignore +0 -0
  196. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/.opencode/commands/autocommit.md +0 -0
  197. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/.opencode/tools/specrepo-autocommit.js +0 -0
  198. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/.opencode/tools/specrepo-autocommit.py +0 -0
  199. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/AGENTS.md +0 -0
  200. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/CHANGELOG.md +0 -0
  201. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/CLAUDE.md +0 -0
  202. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/LICENSE +0 -0
  203. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/MANIFEST.in +0 -0
  204. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/README.md +0 -0
  205. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/docs/build-semantics.md +0 -0
  206. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/docs/drawing-extensions.md +0 -0
  207. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/docs/manifests.md +0 -0
  208. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/docs/neutral-model.md +0 -0
  209. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/docs/project-configuration.md +0 -0
  210. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/docs/spikes/format-feasibility.md +0 -0
  211. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/docs/toolchain.md +0 -0
  212. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/docs/two-tier-contract.md +0 -0
  213. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/docs/viewer-delivery.md +0 -0
  214. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/pyproject.toml +0 -0
  215. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/setup.cfg +0 -0
  216. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/__init__.py +0 -0
  217. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/__main__.py +0 -0
  218. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/_locking.py +0 -0
  219. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/_project_loader.py +0 -0
  220. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/_project_state.py +0 -0
  221. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/_scaffold.py +0 -0
  222. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/_transaction.py +0 -0
  223. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/_viewer_static/assets/hdrTextureLoader-BGQvgh0h.js +0 -0
  224. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/_viewer_static/assets/mesh.vertexData.functions-ayNlGC5K.js +0 -0
  225. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/_viewer_static/sw.js +0 -0
  226. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/artifacts.py +0 -0
  227. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/build.py +0 -0
  228. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/cli.py +0 -0
  229. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/context.py +0 -0
  230. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/determinism.py +0 -0
  231. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/drawings/__init__.py +0 -0
  232. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/drawings/_catalog.py +0 -0
  233. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/drawings/_validation.py +0 -0
  234. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/elements.py +0 -0
  235. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exceptions.py +0 -0
  236. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/__init__.py +0 -0
  237. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/base.py +0 -0
  238. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/drawings/__init__.py +0 -0
  239. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/drawings/annotations.py +0 -0
  240. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/drawings/dxf.py +0 -0
  241. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/drawings/model.py +0 -0
  242. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/drawings/pdf.py +0 -0
  243. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/drawings/primitives.py +0 -0
  244. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/drawings/projection.py +0 -0
  245. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/drawings/svg.py +0 -0
  246. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/glb.py +0 -0
  247. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/ifc.py +0 -0
  248. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/quantities.py +0 -0
  249. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/exporters/step.py +0 -0
  250. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/project_config.py +0 -0
  251. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/py.typed +0 -0
  252. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/recipes.py +0 -0
  253. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/runtime_sync.py +0 -0
  254. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/schemas/build-manifest-1.json +0 -0
  255. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/schemas/design-manifest-1.json +0 -0
  256. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/schemas/download-manifest-2.json +0 -0
  257. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/schemas/drawing-annotations-1.json +0 -0
  258. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/schemas/glb-manifest-1.json +0 -0
  259. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/schemas/ifc-validation-1.json +0 -0
  260. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/schemas/quantities-1.json +0 -0
  261. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/schemas/run-metadata-1.json +0 -0
  262. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/schemas/site-metadata-1.json +0 -0
  263. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/schemas/step-validation-1.json +0 -0
  264. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/site.py +0 -0
  265. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/templates/project/.gitignore +0 -0
  266. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/templates/project/README.md +0 -0
  267. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/templates/project/config.py +0 -0
  268. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/templates/project/drawing_annotations.py +0 -0
  269. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/templates/project/generated/.gitkeep +0 -0
  270. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/templates/project/model.py +0 -0
  271. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/templates/project/pyproject.toml +0 -0
  272. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/units.py +0 -0
  273. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools/validation.py +0 -0
  274. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools.egg-info/dependency_links.txt +0 -0
  275. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools.egg-info/entry_points.txt +0 -0
  276. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools.egg-info/requires.txt +0 -0
  277. {python_cad_tools-0.1.16 → python_cad_tools-0.1.17}/src/python_cad_tools.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-cad-tools
3
- Version: 0.1.16
3
+ Version: 0.1.17
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,13 @@ of optional runtime imports.
16
16
  `cubic_yards`, `metres`, and `square_metres`.
17
17
  - `python_cad_tools.geometry`: `box`, `reference_line`, `cylinder_between`,
18
18
  `prism_between`, `sloped_pool`, `bounds`, `combined_bounds`, `tessellate`,
19
- `is_valid_solid`, and `diagonal`.
19
+ `is_valid_solid`, and `diagonal`. **Curved geometry that must pass the
20
+ build pipeline's `artifact_integrity` IFC/design-bounds check should not
21
+ use `cylinder_between`** -- its tessellated B-rep output cannot exactly
22
+ match analytic design-side bounds. Use `python_cad_tools.recipes`'
23
+ `CircleProfile` + `ExtrudedProfile` instead; see
24
+ [`cylinder_between`'s docstring](../src/python_cad_tools/geometry.py) and
25
+ `docs/spikes/curved-geometry-ifc-bounds.md` for the confirmed mechanism.
20
26
  - `python_cad_tools.drawings`: `Point2`, `Direction`, `DrawingStyleToken`,
21
27
  `DrawingSheet`, `Line`, `Polyline`, `Text`, `Dimension`, `SectionCallout`,
22
28
  `ElevationMarker`, `TableRow`, `Table`, `SheetAnnotations`, and
@@ -0,0 +1,171 @@
1
+ # Curved geometry vs. the IFC/design bounds integrity check (mechanism confirmed empirically)
2
+
3
+ Status: **mechanism confirmed, fix known — not yet verified against this
4
+ repo's own source.** A later sandbox-agent attempt on the same project (see
5
+ "Confirmed fix" below) empirically proved candidate direction #2: authoring
6
+ curved geometry with `python_cad_tools.recipes` (`CircleProfile` +
7
+ `ExtrudedProfile`) instead of `python_cad_tools.geometry.cylinder_between`
8
+ makes the IFC/design bounds check pass. That's strong black-box evidence for
9
+ *what* fixes it, but still not a read of `artifacts.py`/the IFC exporter, so
10
+ the exact mechanism (why) is still inference, not a confirmed code reading.
11
+
12
+ **2026-09-22, later the same day:** a third independent sandbox-agent
13
+ round-table attempt (request `c40a1710-d08f-4fff-856c-b4970685b4d0`, tenant
14
+ `smoke-1790075921`, against `makeitours-agentic` v0.1.11) reached for
15
+ `cylinder_between` again with no prior guidance steering it elsewhere, hit
16
+ this exact bounds mismatch again, and this time failed the whole transaction
17
+ (exhausted its 40-iteration budget, partly stuck in an unrelated
18
+ trailing-newline formatting loop, without ever recovering). Candidate #4 is
19
+ now actioned: `cylinder_between`'s docstring and `docs/public-api.md` both
20
+ warn away from it for IFC-bounds-checked curved geometry and point at
21
+ `recipes` instead.
22
+
23
+ ## Trigger
24
+
25
+ A `makeitours-data-plane` sandbox-agent smoke run (request
26
+ `c93f9593-773c-43d8-80bb-ac77fb6c26cd`, tenant `smoke-1790042034`,
27
+ 2026-09-22) added a round table — a cylindrical tabletop on a cylindrical
28
+ pedestal leg, built with `python_cad_tools.geometry.cylinder_between` — to a
29
+ `file-template-cad`-seeded project. `python-cad build` failed:
30
+
31
+ ```
32
+ exit 5 (artifact_integrity)
33
+ IFC/design bounds mismatch: expected [-457.2, -457.2, 0.0, 457.2, 457.2, 762.0],
34
+ got [-456.332842, -456.983159, 0.0, 457.2, 456.983159, 762.0]
35
+ ```
36
+
37
+ Z bounds match exactly (0.0, 762.0 — the flat top/bottom caps). Only X/Y, the
38
+ circular cross-section's axes, are off — by up to ~0.87 mm on a 914.4 mm
39
+ (36 in) diameter tabletop.
40
+
41
+ The agent that hit this (`makeitours-agentic`) spent a large number of turns
42
+ and tokens reasoning about the mechanism, including delegating to a
43
+ `cad-compatibility-verifier` specialist that itself timed out (max turns
44
+ exceeded) without resolving anything, before giving up its own investigation.
45
+ It correctly avoided reaching for `build123d` primitives directly to work
46
+ around the mismatch (this package's Tier 1/Tier 2 authoring boundary), since
47
+ it has no visibility into this package's own source.
48
+
49
+ ## Confirmed fix (empirical, black-box)
50
+
51
+ A later attempt at the same round table (same request line, 2026-09-22,
52
+ ~30 minutes after the failure above) rewrote `models/round_table.py` to
53
+ declare both elements with `recipe=ExtrudedProfile(profile=CircleProfile(...),
54
+ ...)` instead of `geometry=cylinder_between(...)`. Result:
55
+
56
+ ```
57
+ python-cad validate -> exit 0, status ok
58
+ python-cad build -> exit 0, artifact_count 23, status ok
59
+ python-cad verify -> exit 0, artifact_count 23, status ok
60
+ ```
61
+
62
+ The agent then ran a decisive cross-check to rule out "both sides silently
63
+ agree on the wrong answer": it temporarily gave the tabletop **both**
64
+ `geometry=cylinder_between(...)` (deliberately misplaced at z 0→50.8mm) and
65
+ `recipe=ExtrudedProfile(...)` (correctly placed at z 711.2→762mm, on top of
66
+ the pedestal). `python-cad build` then failed with:
67
+
68
+ ```
69
+ model_validation: recipe-geometry-mismatch: Recipe and supplied geometry
70
+ disagree: bounds (-457.2, -457.2, 711.2, 457.2, 457.2, 762.0)
71
+ vs (-457.2, -457.2, 0.0, 457.2, 457.2, 50.8)
72
+ ```
73
+
74
+ This is a second, independent confirmation, and a useful one: it reveals
75
+ `model_validation` cross-checks `recipe` against a supplied `geometry` when
76
+ both are present, and the reported recipe-side bounds (`711.2→762`) exactly
77
+ match the intended design (28in→30in) — proving the recipe's `CircleProfile`
78
+ `position=Placement(...)` argument correctly places the profile in 3D, not
79
+ just in the profile's local 2D plane.
80
+
81
+ **Conclusion:** candidate direction #2 (below) is confirmed correct by
82
+ behavior: `recipes`' analytic profiles reconcile with the IFC/design bounds
83
+ check; `cylinder_between`'s B-rep-then-tessellate path does not. Candidate #4
84
+ (document the contract) is now the most valuable and cheapest remaining
85
+ action — nothing in this package's docs points an author from
86
+ `cylinder_between` to `recipes` for anything that needs to survive this
87
+ check, and that gap cost a live agent run roughly 30 minutes and hundreds of
88
+ thousands of tokens across two separate investigation attempts.
89
+
90
+ ## Working hypothesis (still not confirmed against source)
91
+
92
+ The "expected" (design-side) bounds appear to come from the *exact* analytic
93
+ geometry (a true circle, via `combined_bounds()`/similar Tier-1 helpers). The
94
+ "got" (IFC-side) bounds appear to come from *reading the bounds back out of
95
+ the exported IFC file*, whose geometry was tessellated into a polygon
96
+ (~51 sides, worked out from the deviation: for a regular N-gon of radius `r`
97
+ with a vertex on the axis, the opposite bound is `r·cos(π/N)`; solving
98
+ `456.332842 = 457.2·cos(π/N)` gives `N ≈ 51`).
99
+
100
+ If that's right, this isn't a one-off numerical glitch — it's structural: an
101
+ exact circle's bounding box and any polygon approximation's bounding box can
102
+ never be equal, so **any curved solid built via `cylinder_between` may be
103
+ unable to pass this specific integrity check**, regardless of how carefully
104
+ it's authored. The starter template's box-only project passes today only
105
+ because a box tessellates to itself exactly.
106
+
107
+ Also unconfirmed but suggestive: `tests/` (per the agent's own reading of
108
+ `test_build_artifacts.py`) has `test_glb_manifest` asserting
109
+ `glb["bounds_cad_mm"] == step_validation["bounds_mm"]` — i.e., GLB and STEP
110
+ already get reconciled against each other somehow. Whether that reconciliation
111
+ tessellates both sides consistently, or whether GLB/STEP just don't hit this
112
+ problem the way IFC does, is exactly the kind of thing to check first.
113
+
114
+ ## Candidate directions (unranked by feasibility — that requires reading the source)
115
+
116
+ 1. **Compare like with like.** Compute the "expected" design-side bounds via
117
+ the *same* tessellation the IFC exporter uses (e.g. this package's own
118
+ `tessellate()` helper), instead of exact analytic bounds, so a correctly
119
+ authored curved solid can pass by construction.
120
+ 2. **✅ Confirmed by behavior (see above). Export curved profiles analytically
121
+ in IFC.** IFC has first-class support for this shape (`IfcCircleProfileDef`
122
+ + `IfcExtrudedAreaSolid`) — no meshing required. `recipes`'
123
+ `CircleProfile`/`ExtrudedProfile` reconciles with the design-side bounds;
124
+ `cylinder_between` does not. Still unconfirmed: *why*, at the source level
125
+ (does `cylinder_between`'s B-rep genuinely lose its analytic circular face
126
+ on the way to IFC, or is something else going on) — that's now a much more
127
+ narrowly scoped question than "is this fixable at all".
128
+ 3. **A deflection-aware tolerance**, scoped to curved geometry, derived from
129
+ whatever meshing deflection the exporter already applies — not a blanket
130
+ epsilon, but one that matches the mechanism above.
131
+ 4. **✅ Done. Document the real contract.** `cylinder_between` sits in the
132
+ Tier 1 authoring palette next to `box`/`prism_between` with nothing
133
+ warning it may not survive this check. That silence cost one agent run a
134
+ large, expensive investigation, and a second, independent run a whole
135
+ failed transaction. Its docstring and `docs/public-api.md` now warn away
136
+ from it for IFC-bounds-checked curved geometry and point at `recipes`.
137
+ 5. **Catch it earlier and cheaper**, in `python-cad validate` rather than only
138
+ after a full ~60-90 s multi-format `build`.
139
+ 6. **Make the error message point somewhere** — name the likely mechanism
140
+ (tessellation of curved geometry) and where to read more, instead of two
141
+ bare coordinate arrays.
142
+ 7. **Ship a passing example.** Confirm whether any existing template/test
143
+ fixture exercises a real curved solid through the full build + IFC
144
+ integrity pipeline today. If not, this failure mode has simply never been
145
+ tested.
146
+
147
+ ## Out of scope here: a separate, more urgent finding in the calling agent
148
+
149
+ After reaching and verifying the passing state above, the same agent run
150
+ tried to revert its diagnostic (remove the deliberately-wrong `geometry=` it
151
+ had added for the cross-check) and instead destroyed its own working state:
152
+ a botched edit produced a duplicate `geometry=` keyword argument, and it
153
+ could not cleanly recover because the file's content had been pruned from
154
+ its own conversation context, forcing it to guess at exact file content for
155
+ further edits. It exhausted its 40-iteration budget stuck in that loop,
156
+ never returning to the state it had already reached and verified minutes
157
+ earlier. This is a `makeitours-agentic` tooling/context-management gap
158
+ (no forced fresh-read before an edit once content is pruned), not a
159
+ `python-cad-tools` issue — noted here only because it happened in the same
160
+ run and is arguably the more urgent of the two findings.
161
+
162
+ ## What "later" should start with
163
+
164
+ - Read the actual `artifact_integrity` bounds check and the IFC exporter to
165
+ replace every "appears to" above with a confirmed mechanism.
166
+ - Reproduce standalone (a two-element project: one box, one
167
+ `cylinder_between` cylinder) without going through the sandbox agent, to
168
+ get a fast, cheap repro loop instead of ~60-90 s builds.
169
+ - Only then decide which of the candidate directions (if any) is the right
170
+ fix, and whether it belongs in this package, in template documentation, or
171
+ in the sandbox agent's own authoring guidance.
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "Python CAD Tools Viewer",
3
- "short_name": "CAD Tools",
2
+ "name": "MakeItOurs",
3
+ "short_name": "MakeItOurs",
4
4
  "description": "Offline-capable review of generated CAD artifacts",
5
5
  "display": "standalone",
6
6
  "start_url": "./",
@@ -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-CMgMiFPo.js","sha256":"73fd1485138ad2f832b0161273f9598a7be39068f126e249f99512088efb7568","size":35489},{"media_type":"text/javascript; charset=utf-8","path":"assets/bakedVertexAnimation-BlpwZEna.js","sha256":"92dec9f747252535f62b02bd849764c12f773f3692733f40db1aa3d680b022e9","size":15843},{"media_type":"text/javascript; charset=utf-8","path":"assets/basisTextureLoader-pxgVvwE7.js","sha256":"bcf6abc3f9dc3fa5a3bee4530615c5ff2e497b08aa549aa7d322056d4d4039c1","size":7961},{"media_type":"text/javascript; charset=utf-8","path":"assets/brdfTextureTools-CL1Nnrm1.js","sha256":"131346df17b921f746ec5a9aeab82b863847f160e4cb9713e65c0c4fa78e8ff7","size":61224},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpFragment-BNBjNOnF.js","sha256":"5e8d09a4103a915d1a575935c6108e381826bfd32c1d2763e27f19311880e469","size":8075},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpVertex-BTawYPw8.js","sha256":"ac70e95b080e5793d07649b7140bffb5c2736fe47e7cd9c4be23feb7f0c00f9e","size":698},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpVertexDeclaration-B_fffQFY.js","sha256":"03432876b718b2919e44337ab81b01cf7ca7fa48ac86fe1cb0dfdcb81716ca39","size":393},{"media_type":"text/javascript; charset=utf-8","path":"assets/clipPlaneFragment-D1ZAafqO.js","sha256":"1a2b04aed9153bcf624db20c4a33e5e92374a12b60a097fd621a721a7e2c5b7d","size":1275},{"media_type":"text/javascript; charset=utf-8","path":"assets/clipPlaneVertex-BC_wnvpq.js","sha256":"c4059a2e3178040f52fe98f59972fb12ffc1cffca1b6bb8215bfb276a52c9abc","size":1356},{"media_type":"text/javascript; charset=utf-8","path":"assets/cubemapToSphericalPolynomial-DeA9LJ87.js","sha256":"4a93b2b9106426ed87324ccf8c672100489ba8466af64f0d98eff7f33e217d27","size":3667},{"media_type":"text/javascript; charset=utf-8","path":"assets/dds-C5zm4fz8.js","sha256":"f3af73e5a5e8c96dd6b2315b1b9c00a33d86deb472d0cdaa8efa982b0c4e5d8b","size":161},{"media_type":"text/javascript; charset=utf-8","path":"assets/dds.pure-B_7lJeYI.js","sha256":"58830f634481da31cc486f981f103284e0aba7d4c8213564865b59d7408b59aa","size":7046},{"media_type":"text/javascript; charset=utf-8","path":"assets/ddsTextureLoader-DsS5rL5j.js","sha256":"83ae5b750e9810cd235b5ebfe6de5c524157329bab9a5a057f5cd78a805bf71f","size":1310},{"media_type":"text/javascript; charset=utf-8","path":"assets/default.fragment-BUHDudIn.js","sha256":"5bd11f3344c8beb03349cc74b24395e87ed77d97a99ae11aa92145a0115baf3f","size":25362},{"media_type":"text/javascript; charset=utf-8","path":"assets/default.vertex-B80Wq2Ab.js","sha256":"96dccc3f040aaa56b6f9a83dce47a6446bc6e3b365d4691de108f470fc675e6f","size":9451},{"media_type":"text/javascript; charset=utf-8","path":"assets/defaultUboDeclaration-DuGcl3VN.js","sha256":"a66a2f4aad13b7ef089ccb9771b10e360725088e27225a260a52f75fef9d3dc0","size":1624},{"media_type":"text/javascript; charset=utf-8","path":"assets/dumpTools-1F1Rx0a0.js","sha256":"f113b78e47e08ed3b0e487fc8bfab35339e966b8fc7079b9b9d157af584b5fb7","size":3597},{"media_type":"text/javascript; charset=utf-8","path":"assets/envTextureLoader-DqI1ceC5.js","sha256":"59357061c97968830f2c819ff1790bd1e3c745c3cf06aa8ffe3dbbcef8ef0a14","size":1649},{"media_type":"text/javascript; charset=utf-8","path":"assets/exrTextureLoader-DmNwF2B5.js","sha256":"89966059e6443b91c624134248cbf22cdada4b0a0780acd84961950a50e4f2ed","size":14187},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphApplyForceBlock-DmvfeucL.js","sha256":"253b1c345ebaec2c38378ebb3d11e393539db56a63573664089fbcfb8f55cf58","size":675},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphApplyImpulseBlock-ChgIpPqh.js","sha256":"22f046e5139c385c7d9861fd6509d9a4d27efff26c60b095d7da0bfc48a7ee2a","size":691},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphArrayIndexBlock-_JwXSrlj.js","sha256":"2c8ec6f004adbc71a552dc8d2aee3e29b24da07657887485e2bfe38e773120b7","size":649},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBezierCurveEasingBlock-B-T0qVRw.js","sha256":"e5800e3377ba7f93048344458eb5f1b8f8b902dadb09ae370fc959b0bba8b910","size":938},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBinaryOperationBlock-TpZm5BfV.js","sha256":"94fcce83f3c937b48e68cbf5fdb0430d2594d8ac9759eb9d070a53f3d62ca791","size":375},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBranchBlock-CNwAs8cP.js","sha256":"3eab7613078bf3cd034a47491e5b1840706ba0d42c319295e06cc65109925041","size":529},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCachedOperationBlock-DaEYpjja.js","sha256":"b9f90894c098fbc95bb3d3c3427c24c35b3a3ea78775dd481d9ddd514f47421d","size":688},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCancelDelayBlock-Dc4RKYSf.js","sha256":"9f79d5b12204557a1cef1a3a4af80bccf701d1746ec926c2668ed85eb829a2c3","size":592},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCodeExecutionBlock-DCxeE8wr.js","sha256":"57b050a0b640584afe65207e88b71ac325138bed595f20750590375994d1487b","size":470},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConditionalDataBlock-TckZ2SGl.js","sha256":"c505e5803f72f4396cf469e8486fdf1e9023ea2515aead6520320f3e855f6aa6","size":634},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConsoleLogBlock-B5e69wX5.js","sha256":"843951c202aaad8b3b8e661067bfc6b42a8717e7bf3b34b2d40d1812f1181a4a","size":1416},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConstantBlock-3ktOI1lC.js","sha256":"93d19ef938d7b4585854e9c41c99437bb20898dac9baefb0bc20cf374f395038","size":497},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphContextBlock-XTBtETD_.js","sha256":"cb1eefd02152bcce021038e275817c1749d58013e20f58546a8bbe763d03ae90","size":540},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCounterBlock-Pb64y9OD.js","sha256":"f6dad7fc14fd332d8084e192e54653e6d77bb44f89116441b2747017c7efa651","size":630},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDataSwitchBlock-DsG4QDCF.js","sha256":"01a072a554fec2c37c91619eeb59b85694d861016179178429188061e6d83200","size":904},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDebounceBlock-B_XjPDoZ.js","sha256":"e8a7f86d84349ce3330433ccb78d1dd73ad96aaa731b96b6d1637b13d4c783ed","size":768},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDebugBlock-CD6lTvpS.js","sha256":"8c454b7d1d121df1ca12debb3e8f58ca15ede9c36d0837cd25a7be252fe55984","size":1450},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDoNBlock-0NvER8W0.js","sha256":"31e907e8b1c4dd80405436e18f59d50ba3d7c23eb5e1a14330e73381733e4170","size":770},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphEasingBlock-B6hapywt.js","sha256":"72ac0e8713bc7464d9e4be9ccfcb19ffcf406c1eab45682c3fe5ec6d7c821150","size":1627},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphFlipFlopBlock-D1uyBOpq.js","sha256":"ad119bbd437db0dbc50170d2ea22080e297555b9afbca422ba2029e6d8775da6","size":678},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphForLoopBlock-BYD81Gof.js","sha256":"d4b0a3b90269faf264c42f807910d3429690ce8bcf0a9a0a49fe37e233648883","size":1108},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphFunctionReferenceBlock-zABkEq-X.js","sha256":"48be8da6653c7bc597ed9b50c25892ecaadeda1113a63a41aacfa7c1400581c0","size":714},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGLTFDataProvider-B0ofoVrD.js","sha256":"b665a9a135389c67f41a44683bec6542f0c6a3b93fcf67dfadad17efa31da2d8","size":418},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetAngularVelocityBlock-DPTUNnTb.js","sha256":"ff72148c923a7483b65da4b7c8ac938ac2ea8ba3f8be53253dc421c47f276889","size":657},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetAssetBlock-B8_99mSz.js","sha256":"00f0c71acf17ec06da8faf00e0b864d887ecd55849f6784763b60d8195ac72c1","size":638},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetLinearVelocityBlock-DFYXgPrA.js","sha256":"79530288c82b0e8a79dba9210f75a3541ed9798f9125ca5c263dd2e6f79b1d95","size":652},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetPhysicsMassPropertiesBlock-DA6AqPR7.js","sha256":"e245ed26d0e945db7802e626074fe988f87262fec4d83275288c8b2a82445e30","size":801},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetPropertyBlock-Bp4o9QmW.js","sha256":"7dff259cc8fe113223a058bfb5563fc8a903335f0a3d7b8c8627f719f73147a3","size":930},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetSoundVolumeBlock-BAmdegmU.js","sha256":"25bfd0ef12cd52665a53b3cbff970ee2ee9c706d122985d3549e949bdadbf0b8","size":485},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetVariableBlock-Cd8Y6leR.js","sha256":"cd884e7eb7c2dd50b210d8827074e238518d79377f5042b15438ee9e43a9a473","size":545},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIndexOfBlock-CGYxKZZY.js","sha256":"246880bbc481d09feeccff714a9ca8605857a6daf75aec9a6bd0e52beaa6155c","size":607},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphInterpolationBlock-CwjeWPr7.js","sha256":"4830f92681ddaa1afe11516c411a4271c589ee4f0ef82345e4969780ea1deb37","size":2089},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIsKeyPressedBlock-rNAEqrST.js","sha256":"22133edf20c9a86164591763c5557d69a4187edf9d8c087569906d26e67fdf3c","size":1162},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIsSoundPlayingBlock-BTztAQ_0.js","sha256":"57b613ec7afe80d96a57d2f6b60a6e414ddbf35dfd20d6663e11c2876411c08a","size":501},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphJsonPointerParserBlock-DoLWKXUb.js","sha256":"abef94cdcc71bc1dbde6784752e44be001ffda589899a0f2c07eacf73711f853","size":3027},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyDownEventBlock-DPIi37WK.js","sha256":"5c9bbfe7bf19e1f0aa69c103dc248112b6ac8d3ed42fd40cdfd11e319753bd47","size":489},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyUpEventBlock-ZV1Tim4d.js","sha256":"cc403fb85a9ef85415aa7c9c0028b2d09ccbbca7786566054f2b3f3ab6372d85","size":282},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyboardEventBlock-ClUSFYDa.js","sha256":"3e6dca704d791cd8e4eb485c259504e2a3575d8eae9f3a765e2642964b98de9b","size":962},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMathBlocks-BEiYY5fC.js","sha256":"36aabeb1c0133c23e45d551a6614ea1015fecdbed3fcc4ed384e7584710ad338","size":18510},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMathCombineExtractBlocks-CVfFjT4m.js","sha256":"4bdf0d834d017c8c7f6e85f83dc73d0a9cd493ce08ecf3a9933f34d68f7c6c80","size":7966},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMatrixMathBlocks-B6l0dCDc.js","sha256":"cdef2705c836e6968500c58081baa3fb568414d073a50f6cd07e16aa03350297","size":3570},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMeshPickEventBlock-kdpuo1mU.js","sha256":"3325a88eae95b5550f4a5f7f610d1324ca0aebd3e42256461a21920d27785cc1","size":1394},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMultiGateBlock-n99NMOON.js","sha256":"5fe60b3c26514116ba139e660f742f2bcb62af20b19050da813258bdadd326a0","size":1660},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPauseAnimationBlock-DXKPP4nK.js","sha256":"ef715076abdfcfdc3aff51df6200fdbbe08a2e49166edbe0781c1dedc13445d1","size":455},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPauseSoundBlock-e2k4W8Bc.js","sha256":"4e1dc7fe2cf4cca15b302215106fb041e3fcbc291b6e3457544c73bbd3fd04cd","size":552},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPhysicsCollisionEventBlock-ClgKwXfJ.js","sha256":"4884a27b5bcce2587a35f5c6eba155310cda8af0f7bba7d2f831e8498d543628","size":1678},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPlayAnimationBlock-BZj6MNgX.js","sha256":"40639b87f14480df32017a9106e55fe1eaa00683e5e14d689841fd0b7a8286f2","size":3736},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPlaySoundBlock-BnzlrpjK.js","sha256":"b2af10838272c487b6e8f087a14c1b78f0c0d19106f2ff7acd4741b5c0c70b79","size":782},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerDownEventBlock-CQiX1RZi.js","sha256":"46bfd10a2da6be3b34f4d9a60509404d42a498c80ed4e605424d79aed559199f","size":940},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerMoveEventBlock-B_JzBfd9.js","sha256":"2244c89f16fc768d6acfce6a394d44436a51684f46d217a4568cb34ae78bdfed","size":958},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerOutEventBlock-B-xKCRP6.js","sha256":"b694b63fbba5934bd40661286f704534b6f618a29041c8748b17a4d6cf7f2f67","size":831},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerOverEventBlock-DPC5GKft.js","sha256":"36a08414d0b0d6be2881d0e7941b97469a76c6de45b970a26f52bff83361c1e6","size":842},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerUpEventBlock-hCR14WZY.js","sha256":"1056f077a5721bbfa1fbbb0fcc6ad5663aba79731a5b5c19dc745a778e1f04ca","size":930},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphReceiveCustomEventBlock-EOc5SmbK.js","sha256":"0fffa63dcfb6403ac3a82155f85b6741d79ae1331caa10bb95969d5f1ad13c70","size":1530},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSceneReadyEventBlock-BAOJ-S5R.js","sha256":"6fec96f324357b62261d6e254dedea8edd8897a6f8f0f37194cd816a2e14c42c","size":452},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSceneTickEventBlock-BJla1nDw.js","sha256":"704da641630e63f3456b11d1c6fb86b784cae2bfb6a4c9bbc0a82b0e06953de1","size":635},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSendCustomEventBlock-CbJzCBSw.js","sha256":"3172f27e876efc80c6bf393191896b67864b9aa9c477244799a164dcd1ac9eeb","size":926},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSequenceBlock-C0E5Vhwk.js","sha256":"5aa2702157d8a921bf9b26dff7d35fd2ef902764fcfa2ad9275303cb5e12a0d9","size":777},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetAngularVelocityBlock-Crx1sltA.js","sha256":"2d3df25fd48716c119b8f3d6db92b14ee2ca3efd3380deecf93366dfce05696b","size":633},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetDelayBlock-t-D4JM8I.js","sha256":"1a8a3c22b4d3998b9e3434c2f31a91a5ec9fde80db763cea8826f4265ce25f72","size":4183},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetLinearVelocityBlock-DKNa-lhN.js","sha256":"063f688e4b993651edcc857dcb47cadcf2c861f0375617517f606ec6cafc3ad1","size":628},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetPhysicsMotionTypeBlock-BIeMWJwi.js","sha256":"6bf50abc96e21cc55d94dbd8f8840fee9e8a244e150bd01846c182107d6a7383","size":644},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetPropertyBlock-CFERwfo5.js","sha256":"757dd069f6da772892a2f70682775c0c98899ea370dedf7ad67b590167d80792","size":1408},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetSoundVolumeBlock-B8fGBso9.js","sha256":"8407d49d24b352c768b0b3ecac090252db91d2c0e5f5eb1f7cdeab7b98673e67","size":601},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetVariableBlock-D3NUXLsU.js","sha256":"cf373f42a07acfc21753edad8820afdf92c1bfd40df638f9bb1513e79ceec4ce","size":1228},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSoundEndedEventBlock-BsojQIIQ.js","sha256":"79e7d73115f196c654f5378248fd137dfe584f781780358dccc2669f2e278330","size":967},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphStopAnimationBlock-Bhvi4mzM.js","sha256":"118d629b71c55b21fb57289b346b27e3b87b7c0e6e68ee05df1d7877e1d8204a","size":1889},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphStopSoundBlock-BL-vDlPP.js","sha256":"ed2ebcab6ac33f31e71fba783f26d7993e10c021048ef53660a877a2b5f0326f","size":496},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSwitchBlock-q5uox2Ll.js","sha256":"d7b84772dc12333203e36d46f03d9040b3fa6bc5b77929534c361e9ee8ebe3e0","size":1134},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphThrottleBlock-ZvIobaF-.js","sha256":"dce59fcf0e903d3c517efaa8f32baddab62b9443bcff6668db6832fa4efb19ad","size":1363},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphTransformCoordinatesSystemBlock-DC7IZTrj.js","sha256":"f6952fa56193f2cb709833daaa392d898e002ca67b06930fb3fb26062d91dfe6","size":968},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphTypeToTypeBlocks-DsmLuQmd.js","sha256":"00b1848eb3ced348be5023420160e057fc58a990d7ce28a3d46f291e6bfda1f7","size":1281},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphUnaryOperationBlock-CeFOvM8N.js","sha256":"3397b02a082223be22a34ef147517af7e53fc094a3ecc8950e62d1c15f3bb92a","size":303},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphVectorMathBlocks-O_o0PB3R.js","sha256":"a7d543cd3ef188542b773160a550f30096d1fdc883e4e2ae5df25f300dc25339","size":4726},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphWaitAllBlock-CS8S_sto.js","sha256":"84067ae857997694fc33dd759eba45ca288bee39a4200860cece0af5deed04ea","size":1531},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphWhileLoopBlock-BogzY-TI.js","sha256":"7e5a560235798437e798f8f34e2b223633a30771bc1826707435a3ba936492e7","size":863},{"media_type":"text/javascript; charset=utf-8","path":"assets/fogFragment-5iY5mDF9.js","sha256":"6ec855aa390c97ba1954340aa6e72da4ea07fd5fb73faf111a56f36faac863c2","size":1471},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting-CzELCfrg.js","sha256":"5aa436dbc559a306bb93344866c51dd055f52b780a471340f936bb072d4424f2","size":14631},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting-Dm4qQcCl.js","sha256":"e70ae93cf43cacfc35d6c830893c4246a6040b6782f297c8abbbddfaac6fd121","size":14395},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.fragment-Dl5Knagi.js","sha256":"4bc80d90b43133156af74e0ce1a6b106f219e5ed5b6288934a222f1c2f65360a","size":1812},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.fragment-gV6NfBr2.js","sha256":"c1ef325d17e7a386fd267d139c2627b1689c7b88152680985784a4601ba1fe99","size":1541},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.vertex-BU7N8GWm.js","sha256":"ee7bb9b09d8de10a9eca31b45e3ae436e5dca2f9105b1dd0253f4b31b36964ac","size":3748},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.vertex-BYh0LKwp.js","sha256":"d3aa04b76276833e9778c791d44ace9655dedbe3359088e0b1f595001b0e683c","size":4904},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.fragment-DGCqlu5B.js","sha256":"5c6851a143bbef6c3d20f877f2b13429b506ca6272e86ec2d5c5f00c454bd652","size":1984},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.fragment-DPRpU6I6.js","sha256":"a877a2f9e944e11ffed179e3d11e749fa29efec8b3d54ef5a9d67b5ce53d9f09","size":1488},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.vertex-D6831_Db.js","sha256":"5befd2b9ac36b9a65c02c1c8c8030e091beeda8b4e3d9ae3739feebb529ff24f","size":1802},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.vertex-DVVqYQkj.js","sha256":"c4282097a902d6f28dd541530a0c47b3d4a6d89b2198a7c31438b04e52446767","size":2611},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.fragment-CJ5P29rW.js","sha256":"430448ee3480bbe47bb37196ac74be7911318f0adfd92321bdfd31b6ae1b2db8","size":8171},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.fragment-eMPAGW-C.js","sha256":"6d3485c8f417d2781363f5e06d7e4217dfbc0233d6962178c147260a32216587","size":10410},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.vertex-Cfmd-eH1.js","sha256":"a6ed917c3133f0905f4ffd29d4a6893917020efc744040c51902f3b67ed26d64","size":7601},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.vertex-D8aj2PHd.js","sha256":"c5cf0ea41f3ce25ea2ae9206ba351a0ebf702787990fb14f5e21eeb08dca0e36","size":9012},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowBlurPostProcess.fragment-BNUj6Ok4.js","sha256":"5fc795f1dfefa01b20db232882c15dd9b795dbc2d1c4eb81426d734aeccaa86e","size":1409},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapGeneration.fragment-BMfCbDSO.js","sha256":"1a2f03fe0c72a39cf10c9168ff6caad1a7d2f9c8370b08a04abbc66e49a528f7","size":2530},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapGeneration.vertex-HFoIGtvW.js","sha256":"2f3ffe90f5912c09618d6282bfd39bd5b38d7bd1998c2039e369272e90cbd3e1","size":2798},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapMerge.fragment-DcbXX8O5.js","sha256":"2892ae711c23f96333314f7e4d59850390e1b57c4cd84e9b6698be606a125d32","size":1059},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapMerge.vertex-C6kfp5Df.js","sha256":"995b0d9d2c1b1335be85909ec9c3e1140f4219fdf08d56573a3c9b9557ce01a8","size":545},{"media_type":"text/javascript; charset=utf-8","path":"assets/harmonicsFunctions-B_Rux4W4.js","sha256":"5d23a65a7c22294dad6092f3c99b4a2ddb6b5fb436b3ed87c0645d962d955c33","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-DfEEUVrK.js","sha256":"d3ff58e8f227d8c28f1aa5307721edf71adad0870637c3285115874ef542d3a8","size":6488},{"media_type":"text/javascript; charset=utf-8","path":"assets/iesTextureLoader-DRIv8q-c.js","sha256":"bf08a3a427ce61d816074cc293beae34e340967faa958bbe3fd1dfa36454a96d","size":2701},{"media_type":"text/css; charset=utf-8","path":"assets/index-Bi_hQlRi.css","sha256":"b5176a538ec4a26478338f6030529ddb986660e31f31540a25ce7bf1a4240502","size":13019},{"media_type":"text/javascript; charset=utf-8","path":"assets/index-QUv88KPb.js","sha256":"58b4b5d60fcc8af63ebf35d100fd0c6bc8856e314b9836e82d1ae61eb33edb2b","size":2299243},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.fragment-AIxPvzg7.js","sha256":"0c4d69025ab557818791009b12c9bd314853b91e2c863a5b0e931aef7a37925d","size":2311},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.fragment-B-fzpNXl.js","sha256":"548a67cf7f61dac79569ada24dd01408e9e1a0328f9d8afa8d4d692235faea54","size":2851},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.vertex-BeCpz_iB.js","sha256":"b2b3f3d55e8e6b0c2827664319a9a70090a7b3df87ef6e0b0495d1a225acfdca","size":1064},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.vertex-LF_ZsFNn.js","sha256":"de86ddc1a484b1bd0d3c9618a31284e3d8f0c7295065faa61bacff861c4b7ae0","size":899},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlurVaryingDeclaration-0MaBFn29.js","sha256":"ac8c8e1deb467b8f8f1325b04d8ddb7d3afa6ddfe5396ac199edf1fd29ec5eec","size":211},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlurVaryingDeclaration-CKf1P4fb.js","sha256":"d4aec08b3885dab82d197cb24a5d77396e3752fefa45cbae4dda11c03b7abf03","size":221},{"media_type":"text/javascript; charset=utf-8","path":"assets/ktxTextureLoader-tKPsUacI.js","sha256":"cd153fe8d09eaab6eb677772be949c89af2829dcb879881d143b72d1f3c90677","size":14979},{"media_type":"text/javascript; charset=utf-8","path":"assets/lightFragment-k2nRX45x.js","sha256":"ea0a4b4a4056f859f173621c1d0c72537e5ac303885c317b57d6b0d4246a3f9b","size":22605},{"media_type":"text/javascript; charset=utf-8","path":"assets/logDepthDeclaration-BGXXcOUJ.js","sha256":"8c5409703910a74a978ebf6666829fb1186994c0f357b56e6e7cf30a75d441f4","size":280},{"media_type":"text/javascript; charset=utf-8","path":"assets/logDepthVertex-BC72KyzN.js","sha256":"cdeb60e9fe2c00968097ea60020319deea3b3d07b5cff62afc6e4ef54d31ca41","size":826},{"media_type":"text/javascript; charset=utf-8","path":"assets/mainUVVaryingDeclaration-BCMZuxRE.js","sha256":"6801c8d37a185365737ec0d1e8f1298a607c12806b12866b51c9cae68997c8d3","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-Cxk75_zo.js","sha256":"b9105d40a968e37bba52fc5b8d87e439f2d15d323faddd4a0ed705836c98319c","size":278},{"media_type":"text/javascript; charset=utf-8","path":"assets/oitFragment-BtwWIihL.js","sha256":"c22cfca75a6573817c6d1ca411c448e23476f211e6ff671be5e1c11e12ebbc3c","size":52427},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.fragment-8rnUKL54.js","sha256":"63a75088cf5adb559daaec20e3d3fe5264f5c22815bb9077d1fa119870f34aed","size":89838},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.fragment-C6yWZfQI.js","sha256":"b9ea3f0777c85ff54aaefb1bec4dddf210e8384bde9d2208acfd5b5fa5fa245b","size":86994},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.vertex-DGh-kC4B.js","sha256":"03830d633532c3a2c54799ae275e4520dd9d8d488c6b6f389fab1e497b989e01","size":17340},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.vertex-DbnVIs8Y.js","sha256":"6ef342624c2f00941ca7ced6b06ea8ffbf8da68137c6c030217dcfb8dfe20e83","size":20214},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrMaterial.pure-CFHhabYh.js","sha256":"f1ba007bef62e255b71ce1d484af994c0c5c0d06f4c6454e4fb1470faff58aa3","size":134158},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrMaterialLoadingAdapter-BQGAj-f6.js","sha256":"4a74181abd224b6069a2b82d4c78dc59694b04f3fe1de1e8413c0eb400302cb2","size":33220},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrTransmissionLayerData-BMK7l2Ba.js","sha256":"4969e68744b70799a93f8e302a7509bff7518f43f1f1b90784bb63cdf137c978","size":17043},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrTransmissionLayerData-DNsGu5u0.js","sha256":"a4e33ce8e694193e8f6c20161c96f1f8877aaf0e8ca4f45f6b1458451a267245","size":17708},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrUboDeclaration-Cd1JAAAL.js","sha256":"5be6a60d87886672a8f753ddcac2d085202da1621e5b43bf73dbb6fbdd6a686d","size":5221},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrUboDeclaration-rBzbf9n3.js","sha256":"acf4ee9974710cc510b745a4a91eae11783a323b09a044842f528806250eabbc","size":3791},{"media_type":"text/javascript; charset=utf-8","path":"assets/packingFunctions-Dji1Rr-b.js","sha256":"f4b8d153ca830111a40041f0f7ce845145c3369d07fedd0181224f134dd622c9","size":528},{"media_type":"text/javascript; charset=utf-8","path":"assets/packingFunctions-_goA4OEm.js","sha256":"264a4a98d367d243376c472384f9e13039e9efa0d3d5e89501e3588ee15f26ab","size":562},{"media_type":"text/javascript; charset=utf-8","path":"assets/pass.fragment-CgGToehX.js","sha256":"54e3ba0a7d8345043115915d1ac634bc9e7c11a803b9c7784f412b9d62dd756b","size":451},{"media_type":"text/javascript; charset=utf-8","path":"assets/passCube.fragment-CqqQ20XF.js","sha256":"645942f516a0d6b8e346e0157270c536f286d6f5ae932b30d6f541deb7bbebbb","size":1131},{"media_type":"text/javascript; charset=utf-8","path":"assets/passCube.fragment-D93dlgjG.js","sha256":"06201f81afe8ec0956d9fff3eda3d94b409d2e0a2b8595d82643e94101168c22","size":822},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbr.fragment-YSvcDJjz.js","sha256":"36d514ec33a09debad7fa1c9416ffe2168d8dfe704739d00dc6bdae6000a130c","size":93721},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbr.vertex-BOhSAeHX.js","sha256":"9bd442d6dc802bc67a2c10a7a573e498b16b4d0c9e118cbe5c5c56627ffcc30e","size":14451},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrBRDFFunctions-DTEwurLZ.js","sha256":"00eea62cf4318a45e0201c98b3c2240b1a8c674717303e90433f8dc9f1c023f4","size":12760},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrDebug-B4IzJZHZ.js","sha256":"0dde8450e102e5a93efd9de182d709a0eaeedc090158120507d5fcf01c559681","size":43522},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrIBLFunctions-gJ0KErMb.js","sha256":"5709a2774bb6f5043b9a3ae4dc87119b9af0bee570b0305c004034648c05f7af","size":2720},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrMaterial.pure-BRIxFz02.js","sha256":"ede518b21d40ffffd9a20d8d616d730734f81e3c2831af4a9d292fe6c952d8da","size":134889},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrMaterialLoadingAdapter--NRrZRBU.js","sha256":"4a383a41aea2886ed4014acc3677789720fa3bf93b6eaa6f0ac7c2c3d420fd74","size":12426},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrUboDeclaration-6dxbcrtA.js","sha256":"2b595f37d4e8e29c901209ff6ca6d3cd4ed4eed84c4435bc9f436af7c9559fc9","size":2398},{"media_type":"text/javascript; charset=utf-8","path":"assets/postprocess.vertex-ZxthID8t.js","sha256":"7f1c4fd4f73f420bd58e82864099f01a80d734529e8cb018c8403c0000f296e8","size":583},{"media_type":"text/javascript; charset=utf-8","path":"assets/procedural.vertex-BSVnGss-.js","sha256":"544a80c3c89c7dc7506e240c5c3b3bdb4896664f7b42b4fcd683fd24bcd26efc","size":472},{"media_type":"text/javascript; charset=utf-8","path":"assets/procedural.vertex-DzIg_d-k.js","sha256":"01457eae622cd2533b527fa2a5b91784f900c09e09f7dfe5512ee7404a8b500a","size":612},{"media_type":"text/javascript; charset=utf-8","path":"assets/reflectionFunction-CgKY-0t6.js","sha256":"b084ad514feff63a877ec4d2ee854ee5ceeb08a69218a9765fde7ec5b24781dd","size":5231},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdDecode.fragment-CAfeJDpQ.js","sha256":"0df8ce98551a2e1f6a010f5ed1c103e1f8fbd5304717f560286ae6b892dea2cd","size":671},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdEncode.fragment-D7xEO0B-.js","sha256":"8b7f47f9ee480c8598fef6bf6eac928ea13d5e89709ddfe91a83b1e699ed98de","size":662},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdEncode.fragment-DIzz0LC4.js","sha256":"f96922e32037064cea200354b4c5431e7d04742a101dff5b7d60accbb87b6268","size":477},{"media_type":"text/javascript; charset=utf-8","path":"assets/sceneUboDeclaration-kGrRDglr.js","sha256":"b003d0c7ff6b89fded54105f3b281b12012326262c5254a09f85885dfc7cc559","size":435},{"media_type":"text/javascript; charset=utf-8","path":"assets/textureProcessor.fragment-CgQTw0M7.js","sha256":"530383342a352384f5b7065bf73997e23da15af0a1beb4c44d2062037057f477","size":3490},{"media_type":"text/javascript; charset=utf-8","path":"assets/textureProcessor.fragment-DnEEx4Gs.js","sha256":"8489ff3e4f50c03990b8f4544e82061410a414f4b2606786753961712634f0cd","size":4377},{"media_type":"text/javascript; charset=utf-8","path":"assets/tgaTextureLoader-CwaQqeYn.js","sha256":"f4b27584053deb0c781da0a6148f8a5341274f27c490b84ce1ec62fee792160f","size":3527},{"media_type":"text/javascript; charset=utf-8","path":"assets/vertexColorMixing-C2cK_vck.js","sha256":"5722698a8d55846f9ecdc2827f323cbd1dbecbb86657bf5b5516338239b5bf99","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":"239739061d1ea75c2586b1bbd1e26f033e03656981d8642bdba0cd851e65a48a","size":723},{"media_type":"text/javascript; charset=utf-8","path":"sw.js","sha256":"d7d37cb0c5668dae70e28af0908686d4776f16d11321d3e55dcbe62ab85a75b8","size":2629}],"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-BnAaL7KS.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{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-QUv88KPb.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,4 +1,4 @@
1
- import{S as e}from"./index-BnAaL7KS.js";const t="bonesDeclaration",u=`#if NUM_BONE_INFLUENCERS>0
1
+ import{S as e}from"./index-QUv88KPb.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
@@ -1 +1 @@
1
- import{au as F,av as U,L as D,aw as P}from"./index-BnAaL7KS.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 H=!1,x=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)=>{x().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:H},[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=N.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)}}},N={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};
1
+ import{au as F,av as U,L as D,aw as P}from"./index-QUv88KPb.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 H=!1,x=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)=>{x().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:H},[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=N.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)}}},N={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};