python-cad-tools 0.1.3.dev1__tar.gz → 0.1.4__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 (291) hide show
  1. python_cad_tools-0.1.4/.githooks/pre-push +43 -0
  2. python_cad_tools-0.1.4/.github/workflows/release.yml +42 -0
  3. python_cad_tools-0.1.4/.gitignore +24 -0
  4. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/AGENTS.md +4 -4
  5. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/CHANGELOG.md +12 -1
  6. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/CLAUDE.md +4 -4
  7. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/MANIFEST.in +0 -3
  8. {python_cad_tools-0.1.3.dev1/src/python_cad_tools.egg-info → python_cad_tools-0.1.4}/PKG-INFO +1 -1
  9. python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/asset-manifest.json +1 -0
  10. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/animationGroup-CjhCwiIi.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/animationGroup-DsIEQ73q.js +1 -1
  11. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/bakedVertexAnimation-_xBvgBl7.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/bakedVertexAnimation-CZalW6MY.js +1 -1
  12. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/basisTextureLoader-D5LtrhD-.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/basisTextureLoader-COAjXVqP.js +1 -1
  13. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/brdfTextureTools-D9U08KSH.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/brdfTextureTools-BHIclPmG.js +2 -2
  14. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/bumpFragment-BkzgDMwt.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/bumpFragment-VvIKAANw.js +1 -1
  15. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/bumpVertex-BXtiaDZI.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/bumpVertex-DLicej86.js +1 -1
  16. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/bumpVertexDeclaration-CchYDl1F.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/bumpVertexDeclaration-DaRKbtcX.js +1 -1
  17. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/clipPlaneFragment-pIdOfJ_5.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/clipPlaneFragment-Cllz8e_G.js +1 -1
  18. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/clipPlaneVertex-Kl_G8tpP.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/clipPlaneVertex-ChqMABPH.js +1 -1
  19. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/cubemapToSphericalPolynomial-CJ4cRmPh.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/cubemapToSphericalPolynomial-Xk086_Qo.js +1 -1
  20. python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/dds-C6ZccGbi.js +1 -0
  21. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/dds.pure-BoNGq59u.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/dds.pure-DQ1rbFUk.js +1 -1
  22. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/ddsTextureLoader-D8JRisWC.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/ddsTextureLoader-CL_A0T2G.js +1 -1
  23. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/default.fragment-D0gXI89M.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/default.fragment-hdxpe8Dp.js +1 -1
  24. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/default.vertex-BdO0XLk6.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/default.vertex-BLL2IEXP.js +1 -1
  25. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/defaultUboDeclaration-BJ4b62qj.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/defaultUboDeclaration-kpQOJEVS.js +1 -1
  26. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/dumpTools-B7F8Ed3A.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/dumpTools-CUtvg5MO.js +2 -2
  27. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/envTextureLoader-BnvTfKgF.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/envTextureLoader-Bha4zu64.js +1 -1
  28. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/exrTextureLoader-C2D3Wx-p.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/exrTextureLoader-DGetsIyD.js +1 -1
  29. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphApplyForceBlock-C08kKLog.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphApplyForceBlock-D0SE4mA-.js +1 -1
  30. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphApplyImpulseBlock-GzK2l9nm.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphApplyImpulseBlock-DTkgPEFB.js +1 -1
  31. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphArrayIndexBlock-DkRHIuYC.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphArrayIndexBlock-Cjyt2bwB.js +1 -1
  32. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphBezierCurveEasingBlock-Csol8jUn.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphBezierCurveEasingBlock-DWxYlhxj.js +1 -1
  33. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphBinaryOperationBlock-C-xEeg-Z.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphBinaryOperationBlock-BeXLKyeD.js +1 -1
  34. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphBranchBlock-D7bstQqM.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphBranchBlock-BqigJ1AN.js +1 -1
  35. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphCachedOperationBlock-C0pDPzaF.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphCachedOperationBlock-D2544szv.js +1 -1
  36. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphCancelDelayBlock-VwnDZhN9.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphCancelDelayBlock-DS-QhXgE.js +1 -1
  37. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphCodeExecutionBlock-C5aa0K7t.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphCodeExecutionBlock-BY0Vhd0M.js +1 -1
  38. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphConditionalDataBlock-B4vfaSDi.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphConditionalDataBlock-DoNGzuFZ.js +1 -1
  39. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphConsoleLogBlock-CuLlYu4c.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphConsoleLogBlock-CL1zETuj.js +1 -1
  40. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphConstantBlock-DkyD6_YZ.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphConstantBlock-b0L3Bfv_.js +1 -1
  41. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphContextBlock-IKUbfY32.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphContextBlock-CE3gLEM4.js +1 -1
  42. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphCounterBlock-tP_5qAQn.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphCounterBlock-Z6deq4Xb.js +1 -1
  43. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphDataSwitchBlock-DiTgopj3.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphDataSwitchBlock-wfFU7ZMz.js +1 -1
  44. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphDebounceBlock-FLUJTpdt.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphDebounceBlock-B5U221PZ.js +1 -1
  45. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphDebugBlock-C0EH9zPP.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphDebugBlock-CpuIkgZU.js +1 -1
  46. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphDoNBlock-DiAdBjnD.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphDoNBlock-ByWmK6vQ.js +1 -1
  47. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphEasingBlock-CXlIILZe.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphEasingBlock-CRs4rMj_.js +1 -1
  48. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphFlipFlopBlock-5XRf4KeD.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphFlipFlopBlock-CK5fJiSy.js +1 -1
  49. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphForLoopBlock-RitJ6OS_.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphForLoopBlock-H1FPxMZo.js +1 -1
  50. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphFunctionReferenceBlock-DvVIlipg.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphFunctionReferenceBlock-DrieLYOj.js +1 -1
  51. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphGLTFDataProvider-BxBUrprf.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphGLTFDataProvider-D7vSBwR1.js +1 -1
  52. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphGetAngularVelocityBlock-CqBDBjqf.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphGetAngularVelocityBlock-CkYrIYRL.js +1 -1
  53. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphGetAssetBlock-Dk4qKn1w.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphGetAssetBlock-BOr56oxs.js +1 -1
  54. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphGetLinearVelocityBlock-DNN6N9mt.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphGetLinearVelocityBlock-4Mn8MDsq.js +1 -1
  55. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphGetPhysicsMassPropertiesBlock-CTsHqDvM.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphGetPhysicsMassPropertiesBlock-DwufqO-4.js +1 -1
  56. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphGetPropertyBlock-CjX3cseU.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphGetPropertyBlock-CAeZqGoL.js +1 -1
  57. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphGetSoundVolumeBlock-DzWJtlM9.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphGetSoundVolumeBlock-DfnjXMG_.js +1 -1
  58. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphGetVariableBlock-uBq6vXOw.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphGetVariableBlock-Bw2aRjaE.js +1 -1
  59. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphIndexOfBlock-MpANR6P1.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphIndexOfBlock-DuZkczUp.js +1 -1
  60. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphInterpolationBlock-BM2_pZfB.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphInterpolationBlock-CQUVrJhI.js +1 -1
  61. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphIsKeyPressedBlock-X1Q2SR0H.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphIsKeyPressedBlock-CKMqA1DR.js +1 -1
  62. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphIsSoundPlayingBlock-C_ir8hba.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphIsSoundPlayingBlock-CIAX4gsj.js +1 -1
  63. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphJsonPointerParserBlock-I5tJhTaw.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphJsonPointerParserBlock-Bt9WkFOM.js +1 -1
  64. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphKeyDownEventBlock-DSmmDXBR.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphKeyDownEventBlock-BwXDwLBi.js +1 -1
  65. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphKeyUpEventBlock-BDViriRD.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphKeyUpEventBlock-BH_q1Ope.js +1 -1
  66. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphKeyboardEventBlock-B7EQjaZe.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphKeyboardEventBlock-CU8VJhCC.js +1 -1
  67. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphMathBlocks-RIndR7Kr.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphMathBlocks-TXHKXyeY.js +1 -1
  68. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphMathCombineExtractBlocks-BEMkyBCM.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphMathCombineExtractBlocks-DKuB9Mlq.js +1 -1
  69. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphMatrixMathBlocks-BAV1wScN.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphMatrixMathBlocks-BGDHmBFG.js +1 -1
  70. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphMeshPickEventBlock-CcNT5f0d.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphMeshPickEventBlock-DdOr-Hvu.js +1 -1
  71. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphMultiGateBlock-DSEbX2Mj.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphMultiGateBlock-qMXK-ALx.js +1 -1
  72. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphPauseAnimationBlock-Dfthx2s-.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphPauseAnimationBlock-hPtKOUnY.js +1 -1
  73. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphPauseSoundBlock-DSu8v9Kr.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphPauseSoundBlock-BGBSlkM3.js +1 -1
  74. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphPhysicsCollisionEventBlock-jvE_54c8.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphPhysicsCollisionEventBlock-7YfMt_A1.js +1 -1
  75. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphPlayAnimationBlock-DK8Z5heh.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphPlayAnimationBlock-C9_H0W1H.js +1 -1
  76. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphPlaySoundBlock-XiF7wfi1.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphPlaySoundBlock-BhG6uJmA.js +1 -1
  77. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphPointerDownEventBlock-BOqQHgdZ.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphPointerDownEventBlock-GBPgkHfj.js +1 -1
  78. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphPointerMoveEventBlock-DggBfxkF.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphPointerMoveEventBlock-B9xb5ipq.js +1 -1
  79. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOutEventBlock-DvZyyUF4.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOutEventBlock-DZE1Ulng.js +1 -1
  80. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOverEventBlock-YLki8WEB.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOverEventBlock-Bx_Bbmlm.js +1 -1
  81. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphPointerUpEventBlock-D1tqJ9jF.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphPointerUpEventBlock-Lfu7DTHO.js +1 -1
  82. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphReceiveCustomEventBlock-D3VAKTpt.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphReceiveCustomEventBlock-CNMufa4Q.js +1 -1
  83. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSceneReadyEventBlock-Dt8AsNSg.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSceneReadyEventBlock-BInxhpxK.js +1 -1
  84. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSceneTickEventBlock-BtuZ_Spn.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSceneTickEventBlock-DTDZyoc3.js +1 -1
  85. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSendCustomEventBlock-B8Dzycmf.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSendCustomEventBlock-BOGgKOnP.js +1 -1
  86. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSequenceBlock-CQsb2okn.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSequenceBlock-D-FGr9Zw.js +1 -1
  87. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSetAngularVelocityBlock-C3zOq5X7.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSetAngularVelocityBlock-CH6VePBl.js +1 -1
  88. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSetDelayBlock-DxyUb-8k.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSetDelayBlock-n6qAMb7Q.js +1 -1
  89. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSetLinearVelocityBlock-DeNTJQ42.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSetLinearVelocityBlock-DcqJhGqB.js +1 -1
  90. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSetPhysicsMotionTypeBlock-i233RoWe.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSetPhysicsMotionTypeBlock-DRWqANvn.js +1 -1
  91. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSetPropertyBlock-Darrnz2o.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSetPropertyBlock-D_IoFmjW.js +1 -1
  92. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSetSoundVolumeBlock-KrTTGHr6.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSetSoundVolumeBlock-Cu0qdSne.js +1 -1
  93. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSetVariableBlock-8CdS1h8e.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSetVariableBlock-ob3vWA--.js +1 -1
  94. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSoundEndedEventBlock-Cuk8JjDG.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSoundEndedEventBlock-C2d303hL.js +1 -1
  95. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphStopAnimationBlock-DOsG4sc5.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphStopAnimationBlock-BqCklpFH.js +1 -1
  96. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphStopSoundBlock-C5IaCPpa.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphStopSoundBlock-bk8E55Bx.js +1 -1
  97. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphSwitchBlock-ClqiypjM.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphSwitchBlock-DvwhuZhG.js +1 -1
  98. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphThrottleBlock-C7hhfNo2.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphThrottleBlock-DG8TRsJy.js +1 -1
  99. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphTransformCoordinatesSystemBlock-BksU6sPJ.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphTransformCoordinatesSystemBlock-CH4muGsP.js +1 -1
  100. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphTypeToTypeBlocks-DJi_CBW-.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphTypeToTypeBlocks-C7hV0GKG.js +1 -1
  101. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphUnaryOperationBlock-U15mYQbJ.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphUnaryOperationBlock-DiLGLHtc.js +1 -1
  102. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphVectorMathBlocks-D4QAvgsk.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphVectorMathBlocks-USb1v61c.js +1 -1
  103. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphWaitAllBlock-UV6LDk1r.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphWaitAllBlock-D5X16kvu.js +1 -1
  104. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/flowGraphWhileLoopBlock-DPpNHwZP.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/flowGraphWhileLoopBlock-Be9fTLoy.js +1 -1
  105. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/fogFragment-pKchdx3M.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/fogFragment-BzLCRCIz.js +1 -1
  106. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-oRLzV71m.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-CAfPyqPa.js +1 -1
  107. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-DgjcxjKa.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-DPftVbu_.js +1 -1
  108. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-BKYuCXf7.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment--eSkFo4e.js +1 -1
  109. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-NCxeyHg7.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-bBe4NB4J.js +1 -1
  110. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-CW0PXB4s.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-56pdhT0C.js +1 -1
  111. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-zmXoP8p9.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-B1n9hp15.js +1 -1
  112. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-CgX-XH5m.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-BZapF5sB.js +1 -1
  113. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment--IDQcS1p.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-CX6nBRSU.js +1 -1
  114. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-DzuuyEGB.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-COp6zd-l.js +1 -1
  115. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-YB1C1Muy.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-aXKOzvn3.js +1 -1
  116. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/geometry.fragment-EEbMy57o.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/geometry.fragment-BEdt-FQu.js +1 -1
  117. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/geometry.fragment-DuBDWlLB.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/geometry.fragment-Dr1pGbVQ.js +1 -1
  118. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/geometry.vertex-3cVZEKxJ.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/geometry.vertex--elQa6vQ.js +1 -1
  119. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/geometry.vertex-B--XA-QK.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/geometry.vertex-C4cLov7Q.js +1 -1
  120. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/glowBlurPostProcess.fragment-UNz8njEJ.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/glowBlurPostProcess.fragment-C_S_GG9X.js +1 -1
  121. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.fragment-CsSqgq6c.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.fragment-B9tAmR9r.js +1 -1
  122. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.vertex-DOMHadFA.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.vertex-CEIj_3tv.js +1 -1
  123. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/glowMapMerge.fragment-DXi2v5pz.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/glowMapMerge.fragment-C0kWfvu0.js +1 -1
  124. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/glowMapMerge.vertex-DgBSWFHP.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/glowMapMerge.vertex-DPy1k2mD.js +1 -1
  125. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/harmonicsFunctions-BkifmnNV.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/harmonicsFunctions-BVmgiiRj.js +1 -1
  126. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/helperFunctions-Bx8RYYvi.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/helperFunctions-DeCJcXoK.js +1 -1
  127. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/iesTextureLoader-Dj5K0vc1.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/iesTextureLoader-CLEy0Gjc.js +1 -1
  128. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/index-JRwY7p9T.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/index-YcXsPtFI.js +21 -19
  129. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-BRdwtDs7.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-DhmP78e4.js +1 -1
  130. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-B9YDiI_M.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-DzyofO4j.js +1 -1
  131. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-CWlIunB6.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-1S6DR99z.js +1 -1
  132. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-A7OpqdrG.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-BUw8hyu8.js +1 -1
  133. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-PE5ICZNw.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-DPnSKXPz.js +1 -1
  134. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-YMenN7Se.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-GWJW2YR3.js +1 -1
  135. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/ktxTextureLoader-uG9TUdGM.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/ktxTextureLoader-Bz9RqBRq.js +1 -1
  136. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/lightFragment-CDLhoaId.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/lightFragment-BRkIPUO1.js +1 -1
  137. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/logDepthDeclaration-BOlhc3aa.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/logDepthDeclaration-DHeJwlJR.js +1 -1
  138. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/logDepthVertex-BIA9Xrid.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/logDepthVertex-Dt5zdVFA.js +1 -1
  139. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/mainUVVaryingDeclaration-PmIDYGIz.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/mainUVVaryingDeclaration-CoUbOUEQ.js +1 -1
  140. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/meshUboDeclaration-BfPhZsyr.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/meshUboDeclaration-dDsFbRSv.js +1 -1
  141. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/oitFragment-DpKfMtsk.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/oitFragment-C1JYx8fS.js +1 -1
  142. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-BAOdoy3Z.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-BJTs78x9.js +1 -1
  143. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-BmgNfxS4.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-CnBW8BK7.js +1 -1
  144. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-BpB-7aXl.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-Cis9aL4z.js +1 -1
  145. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-D-IjPutK.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-Qr3-JJak.js +1 -1
  146. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/openpbrMaterial.pure-C6V2SeQx.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/openpbrMaterial.pure-CyogTmBA.js +3 -3
  147. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/openpbrMaterialLoadingAdapter-CbcwuEwB.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/openpbrMaterialLoadingAdapter-Ia3_0Gp8.js +2 -2
  148. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-BClMu_zp.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-D2UaStdu.js +1 -1
  149. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-1U_DHNWK.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-Yc4m_LFv.js +1 -1
  150. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-piwBvKOi.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-DfY3S0VX.js +1 -1
  151. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-DLujw3YH.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-YAeSpo2n.js +1 -1
  152. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/packingFunctions-BD5WZtBT.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/packingFunctions-BWIusbYB.js +1 -1
  153. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/packingFunctions-D3gaUkUa.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/packingFunctions-yE7XM0N6.js +1 -1
  154. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/pass.fragment-CzZpaqYk.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/pass.fragment-DsLu0lV1.js +1 -1
  155. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/passCube.fragment-DwRJ1H1s.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/passCube.fragment-CmSU0-bM.js +1 -1
  156. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/passCube.fragment-Bso78Amo.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/passCube.fragment-CwkS-Cl_.js +1 -1
  157. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/pbr.fragment-sZ-foSaO.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/pbr.fragment-BUBggeRz.js +1 -1
  158. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/pbr.vertex-PBjkpyNN.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/pbr.vertex-BXB7uMkC.js +1 -1
  159. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/pbrBRDFFunctions-Dv8-Akv1.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/pbrBRDFFunctions-C50h7JEU.js +1 -1
  160. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/pbrDebug-5RaK38tC.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/pbrDebug-RHma8ghT.js +1 -1
  161. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/pbrIBLFunctions-D_X-tzpO.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/pbrIBLFunctions-D5A_AxnZ.js +1 -1
  162. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/pbrMaterial.pure-RJ6tVczH.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/pbrMaterial.pure-DN58n3w5.js +2 -2
  163. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/pbrMaterialLoadingAdapter-BqlfZ1xs.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/pbrMaterialLoadingAdapter-COioUqvP.js +1 -1
  164. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/pbrUboDeclaration-BqNgF1qB.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/pbrUboDeclaration-CMkwjzTB.js +1 -1
  165. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/postprocess.vertex-9J4kRI6V.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/postprocess.vertex-DYv0bAut.js +1 -1
  166. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/procedural.vertex-Bq_A-zE0.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/procedural.vertex-BMAV1XYH.js +1 -1
  167. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/procedural.vertex-DzkBufoo.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/procedural.vertex-CRCZXfiw.js +1 -1
  168. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/reflectionFunction-n0dvho3A.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/reflectionFunction-CpMEFzxv.js +1 -1
  169. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/rgbdDecode.fragment-0BuGamw5.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/rgbdDecode.fragment-BZcVE2Bb.js +1 -1
  170. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-BBGe9kwu.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-BImEwGmR.js +1 -1
  171. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-DiiD2NE-.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-DPFzMtDN.js +1 -1
  172. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/sceneUboDeclaration-BmpwedcW.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/sceneUboDeclaration-1bB3YoON.js +1 -1
  173. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-CyBHPXX2.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment--dZBsr4X.js +1 -1
  174. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-CwNRejEe.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-BlZ9kg3B.js +1 -1
  175. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/tgaTextureLoader-ClB6SRY9.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/tgaTextureLoader-DeroIE2j.js +1 -1
  176. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/vertexColorMixing-f4wQRwGI.js → python_cad_tools-0.1.4/src/python_cad_tools/_viewer_static/assets/vertexColorMixing-C6OHmVcI.js +1 -1
  177. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_viewer_static/index.html +1 -1
  178. python_cad_tools-0.1.4/src/python_cad_tools/build-info.json +1 -0
  179. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/manifests.py +2 -1
  180. python_cad_tools-0.1.4/src/python_cad_tools/schemas/design-manifest-1.json +1 -0
  181. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4/src/python_cad_tools.egg-info}/PKG-INFO +1 -1
  182. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools.egg-info/SOURCES.txt +169 -186
  183. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools.egg-info/scm_file_list.json +170 -200
  184. python_cad_tools-0.1.4/src/python_cad_tools.egg-info/scm_version.json +8 -0
  185. python_cad_tools-0.1.3.dev1/.gitignore +0 -16
  186. python_cad_tools-0.1.3.dev1/PYTHON_CAD_TOOLS_REPOSITORY_MIGRATION_PLAN.md +0 -1802
  187. python_cad_tools-0.1.3.dev1/docs/migration/02-package-identity-report.md +0 -158
  188. python_cad_tools-0.1.3.dev1/docs/migration/03-public-api-report.md +0 -51
  189. python_cad_tools-0.1.3.dev1/docs/migration/04-build-artifacts-report.md +0 -83
  190. python_cad_tools-0.1.3.dev1/docs/migration/05-drawings-report.md +0 -102
  191. python_cad_tools-0.1.3.dev1/docs/migration/06-viewer-report.md +0 -121
  192. python_cad_tools-0.1.3.dev1/docs/migration/07-cleanup-ci-report.md +0 -209
  193. python_cad_tools-0.1.3.dev1/docs/migration/08-local-rc-report.md +0 -165
  194. python_cad_tools-0.1.3.dev1/docs/migration/baseline-report.md +0 -359
  195. python_cad_tools-0.1.3.dev1/docs/migration-prompts/00-execution-profile.md +0 -89
  196. python_cad_tools-0.1.3.dev1/docs/migration-prompts/01-preserve-and-baseline.md +0 -53
  197. python_cad_tools-0.1.3.dev1/docs/migration-prompts/02-package-identity-and-skeleton.md +0 -53
  198. python_cad_tools-0.1.3.dev1/docs/migration-prompts/03-public-api-and-project-loading.md +0 -45
  199. python_cad_tools-0.1.3.dev1/docs/migration-prompts/04-build-artifacts-and-determinism.md +0 -53
  200. python_cad_tools-0.1.3.dev1/docs/migration-prompts/05-format-neutral-drawings.md +0 -45
  201. python_cad_tools-0.1.3.dev1/docs/migration-prompts/06-viewer-site-and-offline.md +0 -53
  202. python_cad_tools-0.1.3.dev1/docs/migration-prompts/07-legacy-removal-governance-and-ci.md +0 -64
  203. python_cad_tools-0.1.3.dev1/docs/migration-prompts/08-local-release-candidate.md +0 -73
  204. python_cad_tools-0.1.3.dev1/docs/migration-prompts/README.md +0 -50
  205. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/asset-manifest.json +0 -1
  206. python_cad_tools-0.1.3.dev1/src/python_cad_tools/_viewer_static/assets/dds-YsWo1VVF.js +0 -1
  207. python_cad_tools-0.1.3.dev1/src/python_cad_tools/build-info.json +0 -1
  208. python_cad_tools-0.1.3.dev1/src/python_cad_tools/schemas/design-manifest-1.json +0 -1
  209. python_cad_tools-0.1.3.dev1/src/python_cad_tools.egg-info/scm_version.json +0 -8
  210. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/.gitattributes +0 -0
  211. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/.github/workflows/ci.yml +0 -0
  212. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/.github/workflows/downstream-compatibility.yml +0 -0
  213. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/.github/workflows/release-candidate.yml +0 -0
  214. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/.opencode/commands/autocommit.md +0 -0
  215. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/.opencode/tools/specrepo-autocommit.js +0 -0
  216. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/.opencode/tools/specrepo-autocommit.py +0 -0
  217. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/LICENSE +0 -0
  218. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/README.md +0 -0
  219. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/docs/build-semantics.md +0 -0
  220. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/docs/drawing-extensions.md +0 -0
  221. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/docs/manifests.md +0 -0
  222. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/docs/project-configuration.md +0 -0
  223. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/docs/public-api.md +0 -0
  224. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/docs/spikes/format-feasibility.md +0 -0
  225. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/docs/viewer-delivery.md +0 -0
  226. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/pyproject.toml +0 -0
  227. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/setup.cfg +0 -0
  228. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/__init__.py +0 -0
  229. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/__main__.py +0 -0
  230. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_locking.py +0 -0
  231. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_project_loader.py +0 -0
  232. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_project_state.py +0 -0
  233. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_scaffold.py +0 -0
  234. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_transaction.py +0 -0
  235. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_viewer_static/app.webmanifest +0 -0
  236. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_viewer_static/assets/hdrTextureLoader-BGQvgh0h.js +0 -0
  237. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_viewer_static/assets/index-DcTTrc-8.css +0 -0
  238. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_viewer_static/assets/mesh.vertexData.functions-ayNlGC5K.js +0 -0
  239. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_viewer_static/favicon.svg +0 -0
  240. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/_viewer_static/sw.js +0 -0
  241. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/artifacts.py +0 -0
  242. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/build.py +0 -0
  243. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/cli.py +0 -0
  244. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/context.py +0 -0
  245. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/determinism.py +0 -0
  246. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/drawings/__init__.py +0 -0
  247. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/drawings/_catalog.py +0 -0
  248. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/drawings/_validation.py +0 -0
  249. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/elements.py +0 -0
  250. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exceptions.py +0 -0
  251. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/__init__.py +0 -0
  252. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/base.py +0 -0
  253. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/drawings/__init__.py +0 -0
  254. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/drawings/annotations.py +0 -0
  255. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/drawings/dxf.py +0 -0
  256. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/drawings/model.py +0 -0
  257. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/drawings/pdf.py +0 -0
  258. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/drawings/primitives.py +0 -0
  259. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/drawings/projection.py +0 -0
  260. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/drawings/svg.py +0 -0
  261. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/glb.py +0 -0
  262. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/ifc.py +0 -0
  263. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/quantities.py +0 -0
  264. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/exporters/step.py +0 -0
  265. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/geometry.py +0 -0
  266. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/project_config.py +0 -0
  267. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/py.typed +0 -0
  268. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/runtime_sync.py +0 -0
  269. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/schemas/build-manifest-1.json +0 -0
  270. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/schemas/download-manifest-2.json +0 -0
  271. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/schemas/drawing-annotations-1.json +0 -0
  272. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/schemas/glb-manifest-1.json +0 -0
  273. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/schemas/ifc-validation-1.json +0 -0
  274. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/schemas/quantities-1.json +0 -0
  275. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/schemas/run-metadata-1.json +0 -0
  276. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/schemas/site-metadata-1.json +0 -0
  277. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/schemas/step-validation-1.json +0 -0
  278. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/site.py +0 -0
  279. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/templates/project/.gitignore +0 -0
  280. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/templates/project/README.md +0 -0
  281. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/templates/project/config.py +0 -0
  282. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/templates/project/drawing_annotations.py +0 -0
  283. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/templates/project/generated/.gitkeep +0 -0
  284. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/templates/project/model.py +0 -0
  285. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/templates/project/pyproject.toml +0 -0
  286. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/units.py +0 -0
  287. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools/validation.py +0 -0
  288. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools.egg-info/dependency_links.txt +0 -0
  289. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools.egg-info/entry_points.txt +0 -0
  290. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools.egg-info/requires.txt +0 -0
  291. {python_cad_tools-0.1.3.dev1 → python_cad_tools-0.1.4}/src/python_cad_tools.egg-info/top_level.txt +0 -0
@@ -0,0 +1,43 @@
1
+ #!/bin/sh
2
+ # Pre-push hook: require annotated tags to be pushed alongside main.
3
+ # setuptools-scm derives the release version from git tags — if a tag
4
+ # exists on HEAD but isn't included in the push, CI will produce a
5
+ # dev version (e.g. 0.1.3.dev2) instead of the intended release.
6
+
7
+ input=$(cat) || exit 0
8
+
9
+ pushed_refs=""
10
+ has_main=0
11
+ main_sha=""
12
+
13
+ while IFS=' ' read -r local_ref local_sha remote_ref remote_sha; do
14
+ pushed_refs="$pushed_refs $local_ref"
15
+ if [ "$remote_ref" = "refs/heads/main" ]; then
16
+ has_main=1
17
+ main_sha="$local_sha"
18
+ fi
19
+ done <<EOF
20
+ $input
21
+ EOF
22
+
23
+ [ "$has_main" -eq 0 ] && exit 0
24
+
25
+ tags=$(git tag --points-at "$main_sha" 2>/dev/null)
26
+ [ -z "$tags" ] && exit 0
27
+
28
+ missing=0
29
+ for tag in $tags; do
30
+ tag_ref="refs/tags/$tag"
31
+ case " $pushed_refs " in
32
+ *" $tag_ref "*) ;;
33
+ *)
34
+ echo "ERROR: Commit at main is tagged '$tag' but the tag ref is not in the push."
35
+ echo " setuptools-scm needs the tag in CI to produce the correct version."
36
+ echo " Push the tag explicitly: git push origin $tag"
37
+ missing=1
38
+ ;;
39
+ esac
40
+ done
41
+
42
+ [ "$missing" -eq 0 ] && exit 0
43
+ exit 1
@@ -0,0 +1,42 @@
1
+ name: Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ version:
7
+ description: "Version to release (e.g. 0.1.2)"
8
+ required: true
9
+ type: string
10
+
11
+ permissions:
12
+ contents: write
13
+ id-token: write
14
+
15
+ jobs:
16
+ release:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ with:
21
+ fetch-depth: 0
22
+
23
+ - uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.13"
26
+
27
+ - name: Create and push tag
28
+ run: |
29
+ git config user.name "github-actions"
30
+ git config user.email "github-actions@github.com"
31
+ git tag "v${{ inputs.version }}"
32
+ git push origin "v${{ inputs.version }}"
33
+
34
+ - name: Build distribution
35
+ run: |
36
+ pip install build
37
+ python -m build
38
+
39
+ - name: Upload to PyPI
40
+ uses: pypa/gh-action-pypi-publish@v1.10.3
41
+ with:
42
+ password: ${{ secrets.PYPI_TOKEN }}
@@ -0,0 +1,24 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .venv/
4
+ .pytest_cache/
5
+ .mypy_cache/
6
+ .ruff_cache/
7
+ .coverage
8
+ htmlcov/
9
+ build/
10
+ dist/
11
+ *.egg-info/
12
+
13
+ generated/*
14
+ !generated/.gitkeep
15
+
16
+ .autocommit/
17
+
18
+ # Migration artifacts (removed in v0.1.3)
19
+ PYTHON_CAD_TOOLS_REPOSITORY_MIGRATION_PLAN.md
20
+ back_AGENTS.md
21
+ back_opencode.jsonc
22
+ .back_agents/
23
+ docs/migration/
24
+ docs/migration-prompts/
@@ -32,10 +32,6 @@ its packaged offline viewer. It is not a downstream CAD project.
32
32
 
33
33
  ## What maintainers must not edit
34
34
 
35
- - `.back_agents/`, `back_AGENTS.md`, and `back_opencode.jsonc` — preserved
36
- backup-only content. Never package, copy, or treat as active policy.
37
- - `PYTHON_CAD_TOOLS_REPOSITORY_MIGRATION_PLAN.md` and `docs/migration-prompts/`
38
- — frozen migration-control documents.
39
35
  - Generated artifacts under `generated/` — disposable build products, never
40
36
  design inputs.
41
37
 
@@ -58,6 +54,10 @@ its packaged offline viewer. It is not a downstream CAD project.
58
54
  release unless explicitly asked.
59
55
  - Preserve unrelated working-tree changes; never reset them.
60
56
  - Stage only reviewed task-owned paths.
57
+ - The `.githooks/pre-push` hook guards against pushing `main` without its
58
+ release tag. Enable it with: `git config core.hooksPath .githooks` (the
59
+ repo-global default is already set). A release must always be done as:
60
+ `git tag -a vX.Y.Z -m "vX.Y.Z" && git push origin vX.Y.Z && git push origin main`.
61
61
 
62
62
  ## Save agent
63
63
 
@@ -7,15 +7,23 @@ stable release is published.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.4] - 2026-07-21
11
+
10
12
  ### Added
13
+ - Explicit Orbit and Pan camera modes in the packaged 3D viewer, allowing a
14
+ primary-button drag in Pan mode to move the orbit center.
11
15
  - Continuous delivery: every green push to `main` auto-publishes to PyPI.
12
16
  - Version derived from git tags via `setuptools-scm` (tag `v0.1.0` → stable
13
17
  release `0.1.0`; untagged commits → dev releases).
14
18
  - Template project now depends on `python-cad-tools>=0.1.0`.
15
19
  - SLSA Build Level 3 provenance generated via
16
20
  `slsa-github-generator` generic workflow and uploaded to releases.
21
+ - Design manifest now includes a `glb.site_path` field pointing to the GLB
22
+ artifact location, enabling the offline viewer to resolve the GLB path.
17
23
 
18
24
  ### Changed
25
+ - Updated the 3D viewer navigation hint and accessible canvas description to
26
+ explain how to move the orbit center with mouse or touch controls.
19
27
  - CI publish job gates on all prior jobs passing before uploading to PyPI.
20
28
  - Updated `actions/checkout` to v7.0.0 and `actions/setup-python` to v6.3.0
21
29
  (Node.js 24 runtime).
@@ -23,6 +31,9 @@ stable release is published.
23
31
  ### Removed
24
32
  - Standalone `publish.yml` workflow (functionality merged into `ci.yml`).
25
33
  - `macos-13` runner from platform lock matrix (no longer available).
34
+ - Migration documentation and backup files (`.back_agents/`, `back_AGENTS.md`,
35
+ `back_opencode.jsonc`, `PYTHON_CAD_TOOLS_REPOSITORY_MIGRATION_PLAN.md`,
36
+ `docs/migration/`, `docs/migration-prompts/`).
26
37
 
27
38
  ## [0.1.0rc1] - Unreleased
28
39
 
@@ -66,4 +77,4 @@ stable release is published.
66
77
 
67
78
  ### Notes
68
79
  - Preserved backup-only AI workflow files (`.back_agents/`, `back_AGENTS.md`,
69
- `back_opencode.jsonc`) are excluded from packages and active policy.
80
+ `back_opencode.jsonc`) are excluded from packages and active policy.
@@ -32,10 +32,6 @@ its packaged offline viewer. It is not a downstream CAD project.
32
32
 
33
33
  ## What maintainers must not edit
34
34
 
35
- - `.back_agents/`, `back_AGENTS.md`, and `back_opencode.jsonc` — preserved
36
- backup-only content. Never package, copy, or treat as active policy.
37
- - `PYTHON_CAD_TOOLS_REPOSITORY_MIGRATION_PLAN.md` and `docs/migration-prompts/`
38
- — frozen migration-control documents.
39
35
  - Generated artifacts under `generated/` — disposable build products, never
40
36
  design inputs.
41
37
 
@@ -58,6 +54,10 @@ its packaged offline viewer. It is not a downstream CAD project.
58
54
  release unless explicitly asked.
59
55
  - Preserve unrelated working-tree changes; never reset them.
60
56
  - Stage only reviewed task-owned paths.
57
+ - The `.githooks/pre-push` hook guards against pushing `main` without its
58
+ release tag. Enable it with: `git config core.hooksPath .githooks` (the
59
+ repo-global default is already set). A release must always be done as:
60
+ `git tag -a vX.Y.Z -m "vX.Y.Z" && git push origin vX.Y.Z && git push origin main`.
61
61
 
62
62
  ## Save agent
63
63
 
@@ -4,13 +4,10 @@ include README.md
4
4
  include pyproject.toml
5
5
  graft src/python_cad_tools
6
6
  prune .agents
7
- prune .back_agents
8
7
  prune .tools
9
8
  prune generated
10
9
  prune tests
11
10
  prune viewer
12
- exclude back_AGENTS.md
13
- exclude back_opencode.jsonc
14
11
  global-exclude .DS_Store
15
12
  global-exclude *.py[cod]
16
13
  global-exclude *.map
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-cad-tools
3
- Version: 0.1.3.dev1
3
+ Version: 0.1.4
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
@@ -0,0 +1 @@
1
+ {"entries":[{"media_type":"application/manifest+json","path":"app.webmanifest","sha256":"ff0be0e037de542f53f0d7866966c41db3d75ed1a8849fc1434595d07428ee12","size":401},{"media_type":"text/javascript; charset=utf-8","path":"assets/animationGroup-DsIEQ73q.js","sha256":"b02a8fe5e1d21488235092d2a0bca7bd33ed5f5acea90e1bfa455f52c74945cd","size":35489},{"media_type":"text/javascript; charset=utf-8","path":"assets/bakedVertexAnimation-CZalW6MY.js","sha256":"15a302b5ec17ccc53d7fb6414390ffad56161b346047792d1c1f258ceb50c10c","size":15843},{"media_type":"text/javascript; charset=utf-8","path":"assets/basisTextureLoader-COAjXVqP.js","sha256":"312ef0faff783385b569589e9a69f242b3d4a40a9ea5a155b76ad5d82e06be18","size":7961},{"media_type":"text/javascript; charset=utf-8","path":"assets/brdfTextureTools-BHIclPmG.js","sha256":"5f8a078526cf4818c847878ac5a0edf2ded957180dc3354b0abc60acc192702e","size":61224},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpFragment-VvIKAANw.js","sha256":"77f77a86510b6a434a3967d6b5b6e64661e50796871f7707b0111e4ae477cc1e","size":8075},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpVertex-DLicej86.js","sha256":"a23237a5eb41f058bbc6d2820b5c79c75796715d1ec78d4dcc1af16eb856bf2b","size":698},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpVertexDeclaration-DaRKbtcX.js","sha256":"d657b2f485d3fcec8ccbdec15dbcd97520cec5785809d13cf7bf0ebe909eb801","size":393},{"media_type":"text/javascript; charset=utf-8","path":"assets/clipPlaneFragment-Cllz8e_G.js","sha256":"7b178e83bb3842048e974176dd0349db0750033ffdba9a4c61a20000a8360598","size":1275},{"media_type":"text/javascript; charset=utf-8","path":"assets/clipPlaneVertex-ChqMABPH.js","sha256":"41b65b7cca64bbb57c84745b695981a6515a62f95fcd5a308a0b0f40acafea8c","size":1356},{"media_type":"text/javascript; charset=utf-8","path":"assets/cubemapToSphericalPolynomial-Xk086_Qo.js","sha256":"d46974296e04f3e6a4a1b1d327b93fac0e1ad746362965810a7169dffc61edfe","size":3667},{"media_type":"text/javascript; charset=utf-8","path":"assets/dds-C6ZccGbi.js","sha256":"3c4d8c09bc1a67412bf0a58e3bc848ab7433db7b7da0cb8270248bf5dc4c6d84","size":161},{"media_type":"text/javascript; charset=utf-8","path":"assets/dds.pure-DQ1rbFUk.js","sha256":"abfad1ded2b7ca04e5d2d189672f67b974876b3cf05485cc57493167d005b272","size":7046},{"media_type":"text/javascript; charset=utf-8","path":"assets/ddsTextureLoader-CL_A0T2G.js","sha256":"65d0310c724add00b100dc53c24a012747e32964791f9efe937b2ceac015dc38","size":1310},{"media_type":"text/javascript; charset=utf-8","path":"assets/default.fragment-hdxpe8Dp.js","sha256":"30b4962d4975fbe9fb34f7a294da8158f1e3a21ad141e450f9cfaa72f3cba177","size":25362},{"media_type":"text/javascript; charset=utf-8","path":"assets/default.vertex-BLL2IEXP.js","sha256":"3fb180f170ddcccb658178584340f0a11e1a76debee54b73ac703318eb4fa5a3","size":9451},{"media_type":"text/javascript; charset=utf-8","path":"assets/defaultUboDeclaration-kpQOJEVS.js","sha256":"dfcc7fd968435e4157e3d70979cedaaf7d7f427cedd762609c62b240a432432b","size":1624},{"media_type":"text/javascript; charset=utf-8","path":"assets/dumpTools-CUtvg5MO.js","sha256":"f5dbadfe392937cfa899206e4aacad44197f71f85085a7ba8b8c81e21ebdb9af","size":3597},{"media_type":"text/javascript; charset=utf-8","path":"assets/envTextureLoader-Bha4zu64.js","sha256":"b80ac5a920b89071cfb54896a2368cfd4ff0b4e7a11cf327eb722561f97167e1","size":1649},{"media_type":"text/javascript; charset=utf-8","path":"assets/exrTextureLoader-DGetsIyD.js","sha256":"8e41141e7e5781e25dbbaa8fff1e13685340abeab67a78f620ba7842092b3d92","size":14187},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphApplyForceBlock-D0SE4mA-.js","sha256":"517f9933ee125e9b62a5347abbcfb55e64e2acface178be9e6a906529a6e0579","size":675},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphApplyImpulseBlock-DTkgPEFB.js","sha256":"1ee9a8065d5b57feae3f4335656a6ea9c39396c4dc7fb35a6419dfff4045f8b9","size":691},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphArrayIndexBlock-Cjyt2bwB.js","sha256":"c88f7f51be28aa9f6ced5eb69728f10b0213fb548775ab835b2b7ea6afd5d518","size":649},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBezierCurveEasingBlock-DWxYlhxj.js","sha256":"17f872b691ec46ead9c0832ed667694219fd498bd873b9fbd847ee9ea1b9fd31","size":938},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBinaryOperationBlock-BeXLKyeD.js","sha256":"e5b09ee39e701b4df64c7c5c127184a625df694263a8cb90943459b69d7ac583","size":375},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBranchBlock-BqigJ1AN.js","sha256":"220c9acaeca4e707cc89169c2b8af722ab745599b8bc3d20893e24b40679002e","size":529},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCachedOperationBlock-D2544szv.js","sha256":"622b67bcac4804dff92859212b516e2a25555f3b7a4da920ecdb4e9633e915f9","size":688},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCancelDelayBlock-DS-QhXgE.js","sha256":"21b2243079017c77d6a4ffb58b40d5f0f55623eeddb29c1a34174df007728850","size":592},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCodeExecutionBlock-BY0Vhd0M.js","sha256":"7147147680c6217422046aee3fe9d43aa0b1e18d40528d2cd8213bb6269b3ec4","size":470},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConditionalDataBlock-DoNGzuFZ.js","sha256":"a4c0ef1330e599013ed2cccfd08938d39c8812ca72eb17c787c4006da4dfb67c","size":634},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConsoleLogBlock-CL1zETuj.js","sha256":"d48136892c52322faeb460c5385e51197ca0eaec7e6b5468f2db36593391baf7","size":1416},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConstantBlock-b0L3Bfv_.js","sha256":"75f169d97ff7a03fbffc5f515f9ef1dd1e9dcb66f9fda6f5183ff70cd329c457","size":497},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphContextBlock-CE3gLEM4.js","sha256":"f1e5fbf8c9a0e14d1dbe31597920484c230c81de8e951cc6d6199c1a5f138551","size":540},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCounterBlock-Z6deq4Xb.js","sha256":"16afe55e1f97d17177a6c3c4dd89d59c25d0131aad1079d2148fd4c2033bf359","size":630},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDataSwitchBlock-wfFU7ZMz.js","sha256":"1376affc1bb95021b88beeedf53faeea1d4a872f05733aad75bc5bfb1af9ae62","size":904},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDebounceBlock-B5U221PZ.js","sha256":"212ebf17226744626adf5fa91fd5de8436f6a9b37b2890799d02c24405cc7ae3","size":768},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDebugBlock-CpuIkgZU.js","sha256":"52861c9d83686c5d1d2a7e2d7e0734989ac4a700d984be5569c9631990fcbeee","size":1450},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDoNBlock-ByWmK6vQ.js","sha256":"9d17c114eaa4dbd77352cc25dc08f7d699297bb46f435f8ea76522c88e191113","size":770},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphEasingBlock-CRs4rMj_.js","sha256":"0e2da1fac99f28aa110e29fff61e3b91ee8cad28f1124d7f312853827ec73594","size":1627},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphFlipFlopBlock-CK5fJiSy.js","sha256":"109509e29f30282b39343d7c44c55ca82ec8613d5743898f259d22b14d245048","size":678},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphForLoopBlock-H1FPxMZo.js","sha256":"cdf4e37b594acd14811fef590acd7651cf2e9cdbf79d7278245264cdd8bba05b","size":1108},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphFunctionReferenceBlock-DrieLYOj.js","sha256":"fda1e74dca56b6375ba8b792c05a5db7e4151acdddddf4b2ab971c4aedff7898","size":714},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGLTFDataProvider-D7vSBwR1.js","sha256":"329035ca9d91649fe273537eb2bec92cc5e649800d1c43c9dbc635e55f5e24bc","size":418},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetAngularVelocityBlock-CkYrIYRL.js","sha256":"7d53010bad652dae1aee58d31d2787f411f3bf312229e88190dbd13205f6cae9","size":657},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetAssetBlock-BOr56oxs.js","sha256":"25adb1fb7378ad1c3bc1ad37fce7159efe692eb999d91241e9868fe6b4f9f7f5","size":638},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetLinearVelocityBlock-4Mn8MDsq.js","sha256":"047c4ced3728c729dec6134cee66079d4a6fadb555bc53c9a1fadf906a75a5b6","size":652},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetPhysicsMassPropertiesBlock-DwufqO-4.js","sha256":"781c43b0f638ce75f95eddfcc1e7859a0f93739be4a46eed003ac50cdd269905","size":801},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetPropertyBlock-CAeZqGoL.js","sha256":"15e68531bb6d9978999e8ce09be7a70b590d7ddb7d90caf0ac42e85e61458a45","size":930},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetSoundVolumeBlock-DfnjXMG_.js","sha256":"04c54563477292cdc3bbddafdd24fd6daafd2f1b54041f12530293b2539d7362","size":485},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetVariableBlock-Bw2aRjaE.js","sha256":"d8c0657b75a9f45bb48b39eb4f300e7122f469bb897c1ac2e74b2bd5200c15e5","size":545},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIndexOfBlock-DuZkczUp.js","sha256":"95f0795a05d6b4c77242d6aa9c7fc7af02474668d03515fd401273e7a41c33cd","size":607},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphInterpolationBlock-CQUVrJhI.js","sha256":"76ebe4e6114b4093f67675006811c675ba16baf0c33367e8b306e3c58e16be99","size":2089},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIsKeyPressedBlock-CKMqA1DR.js","sha256":"83a4cdb08b7b599b0bdf58c8ce208c7e86f06749167df480eec68382d6712edf","size":1162},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIsSoundPlayingBlock-CIAX4gsj.js","sha256":"42dbc980bc3b8a33699d5c7b7e5f69ef5447924393e2b5354e9b60b15004881e","size":501},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphJsonPointerParserBlock-Bt9WkFOM.js","sha256":"47b563701cd7a7edb0df3d7674de3616b42c8f4f90d8f7e03f6504bce3f75b8d","size":3027},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyDownEventBlock-BwXDwLBi.js","sha256":"91aaec78d9b950ff0120a369e376b4e94b66280cf801ff774297a1efc10eed52","size":489},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyUpEventBlock-BH_q1Ope.js","sha256":"226907dc8afa8a530a1c3975a84ef5de84ee731c539ecfe46fa8df37f64c5924","size":282},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyboardEventBlock-CU8VJhCC.js","sha256":"ab55076d1b4d0c051f2d494cc20570999d824d65f31438522959145b86292fcd","size":962},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMathBlocks-TXHKXyeY.js","sha256":"407e5893c4a3aaa3a48b5ffe47f9dc0d2983f8ff30b8f21c40de0048d09d5f58","size":18510},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMathCombineExtractBlocks-DKuB9Mlq.js","sha256":"27929587d66dcf125fe546cea5f8a5ad81f611056a62e317da9fdfaac0a9bb17","size":7966},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMatrixMathBlocks-BGDHmBFG.js","sha256":"52500df6c0eadba101d2b9a85027662e4b40177fa3b7f8f1dbbc7664da0e2503","size":3570},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMeshPickEventBlock-DdOr-Hvu.js","sha256":"e7665eb4f9a6a9023e46e666acfeeb7cb70ce1535625b0de1d5583a23407cfcf","size":1394},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMultiGateBlock-qMXK-ALx.js","sha256":"ec2ce63d9509c551633237b94d160b27196d3cda3429bbed48530594cd011b2f","size":1660},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPauseAnimationBlock-hPtKOUnY.js","sha256":"bb37b5bc9edc212086aed86d1e00045d62ca501ecc6c6a4173c1c2243c53cf33","size":455},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPauseSoundBlock-BGBSlkM3.js","sha256":"cac275b0e994773a6f513b35c79631dad75c5caef08e6ad45ad1dc28c544dd9a","size":552},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPhysicsCollisionEventBlock-7YfMt_A1.js","sha256":"3ac690cb8ca6d0671261fa9e1e96d7c774b0c3615a46494a8f7edbc7cb8011c2","size":1678},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPlayAnimationBlock-C9_H0W1H.js","sha256":"ee8033f32523abe0f25291fe356fa4afefdfb012dc64088956cf84b891078a13","size":3736},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPlaySoundBlock-BhG6uJmA.js","sha256":"95ae4dad1d1d3c2de923bba95505fd32e30e81d467bab597ae96ef5ab79f3a95","size":782},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerDownEventBlock-GBPgkHfj.js","sha256":"124ca40495da7b04373871a207b10b5ac337a3ebeddc1bd1b0511ad2da843c0f","size":940},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerMoveEventBlock-B9xb5ipq.js","sha256":"a3cef0c2261c447d9cbe4a09dfa04ecda11487350b8ead516c85d3c7e874a2f9","size":958},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerOutEventBlock-DZE1Ulng.js","sha256":"f17b5fda37669a3789d3e977119fbed895413be0a7bd49308fd3a691e328a119","size":831},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerOverEventBlock-Bx_Bbmlm.js","sha256":"7d056a6bf0ae2c4a7b79ade14b4739b982ed567bbd06105c2aa081e125fe81a3","size":842},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerUpEventBlock-Lfu7DTHO.js","sha256":"7ba26702d78986f1c0c9ce2d285cc886f7573c7e27bd282dc965510186c2022f","size":930},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphReceiveCustomEventBlock-CNMufa4Q.js","sha256":"8631f5b0f01ea6b32cb106b2ee3e5153f99a6aa2c887e4b39ac872000398f01b","size":1530},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSceneReadyEventBlock-BInxhpxK.js","sha256":"822db57d9bdda2b61418573e4389a9ef61adb090970d702fe9eb94702d89de69","size":452},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSceneTickEventBlock-DTDZyoc3.js","sha256":"7cf4483043804f0ce19e342339430cfbfcb9ba0572df9dfac1f84c34359d5920","size":635},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSendCustomEventBlock-BOGgKOnP.js","sha256":"5149d52b6ad340b73bc8e0e1095331ce9b353558acdbd1e6856bdca9bc8e065f","size":926},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSequenceBlock-D-FGr9Zw.js","sha256":"693ef970edf91a0ea9c144703650c35b7e09085562bcef1bbbd317316fc22746","size":777},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetAngularVelocityBlock-CH6VePBl.js","sha256":"1266885cf22619c5e8e402e6b58ab8943caf8e2f45cbc81b7d831b7edf2f2fde","size":633},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetDelayBlock-n6qAMb7Q.js","sha256":"45ec7afafe39c52be70e249a6ef73f891650b642b5766bd6604e5479c7c8be6c","size":4183},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetLinearVelocityBlock-DcqJhGqB.js","sha256":"80e8fe3b0c48a64929afb7c16bd346660862f268d07634862864d9941a26cc7f","size":628},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetPhysicsMotionTypeBlock-DRWqANvn.js","sha256":"fc8abc2d47c1e532b042963589bfb571e44bc14459fd1ae17173ad8bc4fcddc4","size":644},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetPropertyBlock-D_IoFmjW.js","sha256":"af187a9732abe1d1116053ab7c7ce7932db9e3ebab16ddfdde2f861bcd3e9517","size":1408},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetSoundVolumeBlock-Cu0qdSne.js","sha256":"a6b7df35b10e0fa41aa854703ef8e456e07cadd55b10be8aa6cf8cf23c9fc751","size":601},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetVariableBlock-ob3vWA--.js","sha256":"943b87220b12cd3634bdbf0e2d0b658bc1aecf4f856819a3176d8ed27f1f0e60","size":1228},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSoundEndedEventBlock-C2d303hL.js","sha256":"b9b02b428b23da38529cb5eafc2b46561935ed2c189186eb6f3218af84e63d97","size":967},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphStopAnimationBlock-BqCklpFH.js","sha256":"2244c4f1cf6759e3dc81e4814b6f1e12175a70fb5b4a7d436209d15564ac0aaf","size":1889},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphStopSoundBlock-bk8E55Bx.js","sha256":"e650861a4fadeb146d5028c151d049b16a26bd50ea9442708df733bc738acfcb","size":496},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSwitchBlock-DvwhuZhG.js","sha256":"77f145abf550015a7c9a3017bec3bc62ccc800e81b24f8a0fea7d3680c0c2167","size":1134},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphThrottleBlock-DG8TRsJy.js","sha256":"242527e2a90d5f8613b18b8b548373400bd45efbcec80422abda8ae160627c37","size":1363},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphTransformCoordinatesSystemBlock-CH4muGsP.js","sha256":"37e20f6f806fdb0726fdee86eb7092b16c359e077a6185858af06e02f88f9c20","size":968},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphTypeToTypeBlocks-C7hV0GKG.js","sha256":"27b6a837bfe9c7a1ab5ffc909a04efec58107ff4faa19867a9a2121530e0d210","size":1281},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphUnaryOperationBlock-DiLGLHtc.js","sha256":"a3c99ed7effe8d5eb401683b714840d6345ebd8b633b5d369ff0e32d3672545c","size":303},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphVectorMathBlocks-USb1v61c.js","sha256":"b70e50e607c06e3169a3bc27b6558c0b7dbd3155b6fad3d8907ab7fd3575903a","size":4726},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphWaitAllBlock-D5X16kvu.js","sha256":"e24915d5db9a23d06e2ba633ac23b23f2a8eeb65c43ba9fa75cb89929ee7b06b","size":1531},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphWhileLoopBlock-Be9fTLoy.js","sha256":"f130f8f6e45ae3a87c853c8a5eb2a056ec98497b7a887a71768eb6dd15db9ad9","size":863},{"media_type":"text/javascript; charset=utf-8","path":"assets/fogFragment-BzLCRCIz.js","sha256":"b3cf44fe0e988bdca67907a5532dd7161415e703fc1777b45020b7167464efe3","size":1471},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting-CAfPyqPa.js","sha256":"94a78d1b98beb5ca344dd17ead3f0c2279cc294d86885edb763ab6b78ac659ac","size":14395},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting-DPftVbu_.js","sha256":"94ba252ab49cdf629dead1e6dd6775541a9c73782600a7ee3b4a50ff9461f1d4","size":14631},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.fragment--eSkFo4e.js","sha256":"3dfcf1d40225c2aa3ea1babe1b77c556f9ca46e21c5209aced6be11268ed0e32","size":1541},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.fragment-bBe4NB4J.js","sha256":"6f5ac9dc95103ede0c1a261ba886ff1324d23b417033c051271b6986f573bccb","size":1812},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.vertex-56pdhT0C.js","sha256":"5a17db5778f8aa1e498709fb6b4c96c220ac6f82f1170c296d12d58417b7a9b9","size":3748},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.vertex-B1n9hp15.js","sha256":"face1d06427955f65927a6637ec5cc8799e088f22eb68fb3630644bcac1006f8","size":4904},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.fragment-BZapF5sB.js","sha256":"6332037ea1eed9eaf24b20650c785767c9705ada5ecfa73f8766a4b04146c593","size":1488},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.fragment-CX6nBRSU.js","sha256":"8252a3a565d5d2ae18884b7d77335bf0b5f9fbee84549e955d0db2639db54265","size":1984},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.vertex-COp6zd-l.js","sha256":"809e9b52f054cdc57e5fae66d0fc0ea05d9ba376ef5b7f0338e36426727a4094","size":2611},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.vertex-aXKOzvn3.js","sha256":"297381f20a271ff2ab397cf43b0be4c8a61ba7013e5bf19f1e9f1bc2ef09dd63","size":1802},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.fragment-BEdt-FQu.js","sha256":"865158693f2e191fe212450b20b63373efd30ab88a9527823cc536dbe8236f4a","size":8171},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.fragment-Dr1pGbVQ.js","sha256":"8633e53df5ef7ab5f4962e5c0565a3fd4c43755207609c1b41b04c0ff8fd1e7f","size":10410},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.vertex--elQa6vQ.js","sha256":"14fa1053bef3a4e763f5907960ae160d4ad454e75a78257e365fd58e6d524192","size":7601},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.vertex-C4cLov7Q.js","sha256":"1a0ccc1284e6df76ad098674be54ae17bce362a4cb7a9afc76a016923773efb1","size":9012},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowBlurPostProcess.fragment-C_S_GG9X.js","sha256":"bacb3cb1d3989df9bc14341f636d384178d63013bc4239709e07c96f6fa91dcb","size":1409},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapGeneration.fragment-B9tAmR9r.js","sha256":"0be88cd648ef08214fc31bff0ad7d24edd243954f8f44fdece01fd3034e163ab","size":2530},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapGeneration.vertex-CEIj_3tv.js","sha256":"066fd9fdf9564d9896402ca2bf5955691255cbb1bce9185989979d71175965c3","size":2798},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapMerge.fragment-C0kWfvu0.js","sha256":"6081dbe5e3ed0fc8ef4be1d13632ba70e351e58f15e9e925e20533d480c2f544","size":1059},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapMerge.vertex-DPy1k2mD.js","sha256":"42dac7f7663c0b7fb2013a82151c22a9addd75ef0f0b3da9223722b3ac286945","size":545},{"media_type":"text/javascript; charset=utf-8","path":"assets/harmonicsFunctions-BVmgiiRj.js","sha256":"0cf16951cb60f246c1760faad2aa2eb09570f81afe98d48d163ec7c353236da2","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-DeCJcXoK.js","sha256":"3ce94bbd90eb41488267b3bc83e814ac46d0f2cb9fac8584b9a0cd718a6d5df0","size":6488},{"media_type":"text/javascript; charset=utf-8","path":"assets/iesTextureLoader-CLEy0Gjc.js","sha256":"1b70f7a7220181f4c0eeac35b2bfa837d49e23bcb9d8fd8742327b8e4a3677d6","size":2701},{"media_type":"text/css; charset=utf-8","path":"assets/index-DcTTrc-8.css","sha256":"c7ca6d6d72937413e23f12b0307554534382c8099ab41fa9ebeb77d3ef1a1eb0","size":12857},{"media_type":"text/javascript; charset=utf-8","path":"assets/index-YcXsPtFI.js","sha256":"6af561a727dccf9c9f06e04ae07c8c430866dc089ba23b2ad4bc30a4445f9035","size":2298303},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.fragment-DhmP78e4.js","sha256":"8dda14ef407f4820bc1ba98ddb6b151e61709f9343380dbd143d26c4d937b8e3","size":2851},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.fragment-DzyofO4j.js","sha256":"5a8a1b1e0683680267a3d028384d9bdea48d821703b03636057ebd88ba9e75fb","size":2311},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.vertex-1S6DR99z.js","sha256":"19c8898866f3b2c4c666a6b6c72344e7d0d9d2b1aefd06090de26dcef3c0167a","size":1064},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.vertex-BUw8hyu8.js","sha256":"5a7e6e9f8767a24a37e273179e44c1dae67dab937d982ce793bab6dd5d3cf953","size":899},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlurVaryingDeclaration-DPnSKXPz.js","sha256":"37623ca949a8d6400844e54fcbd69a1a69597e4a4618dab2005512244f77dd50","size":221},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlurVaryingDeclaration-GWJW2YR3.js","sha256":"f84dfdce3176eca5a86873325a2660ce7356e913a478b7a36020c1e408a7f45d","size":211},{"media_type":"text/javascript; charset=utf-8","path":"assets/ktxTextureLoader-Bz9RqBRq.js","sha256":"43738377626b9ca7101863b0eefe896d307f26924e7ecf22c703175a683f5ca1","size":14979},{"media_type":"text/javascript; charset=utf-8","path":"assets/lightFragment-BRkIPUO1.js","sha256":"69822a62a443c351f48f2b40d3a1cd9e6d076c3c94b69dd48e3ff06125e9b11a","size":22605},{"media_type":"text/javascript; charset=utf-8","path":"assets/logDepthDeclaration-DHeJwlJR.js","sha256":"9c2897c388646f43ee1a5b7d274be47d17bcb94289c85de716f6e69d9a25d164","size":280},{"media_type":"text/javascript; charset=utf-8","path":"assets/logDepthVertex-Dt5zdVFA.js","sha256":"5c7cb417df2d92c828e69c8c40d3728574e47f19eef33cf0cdebfc31969860ba","size":826},{"media_type":"text/javascript; charset=utf-8","path":"assets/mainUVVaryingDeclaration-CoUbOUEQ.js","sha256":"f238cbfe2223899e02abe98fd3cd7ee93e26f440df2803e455ab910dfd58de20","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-dDsFbRSv.js","sha256":"accd69475d0d13975642049c35ae7e1f46ec9d09c9a57eb20a9ff10ca0b2643b","size":278},{"media_type":"text/javascript; charset=utf-8","path":"assets/oitFragment-C1JYx8fS.js","sha256":"13cfd4c14bdf59deea61142cdf4c0aba730350dc0429bb33428077f6af0ebeed","size":52427},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.fragment-BJTs78x9.js","sha256":"b65acccff8e7f256c4ce8f0cf4c755f737b2f9a0e2a56b4f9791f14f86fa86bd","size":89838},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.fragment-CnBW8BK7.js","sha256":"6b32caf98f97ef6a7f781a96f7d1628da8e017c05909eac541d860ac1e3fe890","size":86994},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.vertex-Cis9aL4z.js","sha256":"7afad52bae5a52d45cd1bf989b27f9fdfcae08e8a53f19be4f04993778dfaee6","size":17340},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.vertex-Qr3-JJak.js","sha256":"87670edb1e5fa8cc091fb5f758a547fbd67a8a24898279923d26e6ec5bbec486","size":20214},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrMaterial.pure-CyogTmBA.js","sha256":"6e29eb43ea47695f190ac2a16f0a4465e76c31a222977cf4465d0d48f4bde0e7","size":134158},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrMaterialLoadingAdapter-Ia3_0Gp8.js","sha256":"77780c582dc5ad7f686655227e1ec4abd3308e5301d3cde5e0d5b64ba13de4af","size":33220},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrTransmissionLayerData-D2UaStdu.js","sha256":"d7ce619c241a9962cb45da2dd5b7c8b740b35da5ce2057042bee1600e8433b63","size":17043},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrTransmissionLayerData-Yc4m_LFv.js","sha256":"1dfaef97be41276a7f75b7d851d68629aa6f64427801c7bd8dc1cf8a8db384c8","size":17708},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrUboDeclaration-DfY3S0VX.js","sha256":"dd4f47528348bcd1f6d44a6fb9b351f1356cbef499998bc59b21639239fa30e5","size":5221},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrUboDeclaration-YAeSpo2n.js","sha256":"a7c322e525e9d66d5f9f7c2f84d3f61b422b86e329bcbfa2528302d336d5f8a8","size":3791},{"media_type":"text/javascript; charset=utf-8","path":"assets/packingFunctions-BWIusbYB.js","sha256":"f09ad5477660038e730ba87862265e37214ad67326bfed6e6d8097b5ea9eae27","size":528},{"media_type":"text/javascript; charset=utf-8","path":"assets/packingFunctions-yE7XM0N6.js","sha256":"d26a577649b4b9e1af02146a7d009d138dc8147db9e628daa4be49fd4717f5ed","size":562},{"media_type":"text/javascript; charset=utf-8","path":"assets/pass.fragment-DsLu0lV1.js","sha256":"817760066a1f719703389d4c8ce2107d15cf436706c53d6bfb974b016ba07d76","size":451},{"media_type":"text/javascript; charset=utf-8","path":"assets/passCube.fragment-CmSU0-bM.js","sha256":"2aa2675a4ad3afa752cee507b0443732314759d086610726fe7797d84d614637","size":1131},{"media_type":"text/javascript; charset=utf-8","path":"assets/passCube.fragment-CwkS-Cl_.js","sha256":"04ce5e8653cde69f0e89a0e8525d523571371738dc07acefd2ce6bf46180db34","size":822},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbr.fragment-BUBggeRz.js","sha256":"c3ee547b3ebda02f38727d6ee5abdf3b88aacc3efb396a0e5039e1c30e1c6f24","size":93721},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbr.vertex-BXB7uMkC.js","sha256":"52c80e9646b8be562662a365f45db0162799dfe21ba249c1bbef7ee187817105","size":14451},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrBRDFFunctions-C50h7JEU.js","sha256":"1228b38fc1699c5df78b8c60c00db6f53ef62cffe7abf443a8b03d2798f966f4","size":12760},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrDebug-RHma8ghT.js","sha256":"18d90b30528c76d4703dd0386e74356ee1b58e6e02c027fe0edbb074cf6e627e","size":43522},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrIBLFunctions-D5A_AxnZ.js","sha256":"721adeefe9322f5a465b8a1773ef0f0692c3f9784727e1228cf54b34c2f7bdcb","size":2720},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrMaterial.pure-DN58n3w5.js","sha256":"547503facda5ccb790efc7171954d2f3057820d6cbf8517df2756c4133e5956c","size":134889},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrMaterialLoadingAdapter-COioUqvP.js","sha256":"f68b0878ba76d6501ee44e873358e158c98df3f35ac71b7d31c76211f772cf6a","size":12426},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrUboDeclaration-CMkwjzTB.js","sha256":"0a0bd805ded5273adba698b1a3b320e294da4a46c53d2f229950ea7dee98723e","size":2398},{"media_type":"text/javascript; charset=utf-8","path":"assets/postprocess.vertex-DYv0bAut.js","sha256":"b632222ff5facba68f2e026e52dad8d51f031d31890c36f2f4787f922b56192d","size":583},{"media_type":"text/javascript; charset=utf-8","path":"assets/procedural.vertex-BMAV1XYH.js","sha256":"fcbaf8ad72d5bfaa61cce274f0f28b3837b15bd2bec2ccb57c9dea3a2467be28","size":612},{"media_type":"text/javascript; charset=utf-8","path":"assets/procedural.vertex-CRCZXfiw.js","sha256":"a372ffc3493ad6a065739d53774bc2e400f508c778430c594dc9bb2d029bae18","size":472},{"media_type":"text/javascript; charset=utf-8","path":"assets/reflectionFunction-CpMEFzxv.js","sha256":"54d896aa10e48a4e2f3f00c6b6f070ad00b1b5de1f330af1884090576b07b91f","size":5231},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdDecode.fragment-BZcVE2Bb.js","sha256":"83fb8d26918183bdf8bba34a8eac2cc1fe3bfae82a3692bf1d29cc05fc90e371","size":671},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdEncode.fragment-BImEwGmR.js","sha256":"4729f51ceefc224355f7030dfc53c06366d0c129bf9d49eed180387c507186e8","size":662},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdEncode.fragment-DPFzMtDN.js","sha256":"8b6b58f98209bcf6f33602083e09ef88f490160a91e6d0c9b09eaa19cce9ce08","size":477},{"media_type":"text/javascript; charset=utf-8","path":"assets/sceneUboDeclaration-1bB3YoON.js","sha256":"6741ddd687da87a22592fbad0fa0c45c16421ce4174f3a16e676f58e17e82767","size":435},{"media_type":"text/javascript; charset=utf-8","path":"assets/textureProcessor.fragment--dZBsr4X.js","sha256":"7d05ea78638024425de10cfe7e3f7f9960f02d7009f7a8e178e27bc56d4309aa","size":4377},{"media_type":"text/javascript; charset=utf-8","path":"assets/textureProcessor.fragment-BlZ9kg3B.js","sha256":"cda68cf40ef14f86bea17e3cdfb08fcfa0f24eace20898e0ed4d16ccba310de2","size":3490},{"media_type":"text/javascript; charset=utf-8","path":"assets/tgaTextureLoader-DeroIE2j.js","sha256":"23234ff9144bd1925b351f50b0c99cf0405cc02d3a72f0387f156ee028e4508a","size":3527},{"media_type":"text/javascript; charset=utf-8","path":"assets/vertexColorMixing-C6OHmVcI.js","sha256":"ccc2a6dd6a3229791283c1953bfb39011325e3071e801815d9e93b0e3fac6894","size":22140},{"media_type":"image/svg+xml","path":"favicon.svg","sha256":"546022cfc08c84149ba3e3fc311fc66ffa29f2227e19ee138525b391c040cd07","size":640},{"media_type":"text/html; charset=utf-8","path":"index.html","sha256":"3542e618e92b40d3f6e5278656cc4f610bfb9341d5b616fe4cd56d21cf1c130b","size":742},{"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-JRwY7p9T.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-YcXsPtFI.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-JRwY7p9T.js";const t="bonesDeclaration",u=`#if NUM_BONE_INFLUENCERS>0
1
+ import{S as e}from"./index-YcXsPtFI.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-JRwY7p9T.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-YcXsPtFI.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};