python-cad-tools 0.1.21__tar.gz → 0.1.23__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.
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/CHANGELOG.md +78 -0
- {python_cad_tools-0.1.21/src/python_cad_tools.egg-info → python_cad_tools-0.1.23}/PKG-INFO +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/asset-manifest.json +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/animationGroup-y0vxJTHi.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/animationGroup-CWWigNuG.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/bakedVertexAnimation-BBtOjYgD.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/bakedVertexAnimation-CsvToT2G.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/basisTextureLoader-B4pSwZUY.js +1 -0
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/brdfTextureTools-BNEbZjdc.js +2 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/bumpFragment-DA8EdzWp.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/bumpFragment-Nq43ZTAC.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/bumpVertex-C-Tz5-on.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/bumpVertex-XOKqV93Q.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/bumpVertexDeclaration-DcJYzNbJ.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/bumpVertexDeclaration-BAa9GdEq.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/clipPlaneFragment-TSEtEMNd.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/clipPlaneFragment-C0mhzlyB.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/clipPlaneVertex-uZlnoaiC.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/clipPlaneVertex-COLxe99z.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/cubemapToSphericalPolynomial-CbpdsBi-.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/cubemapToSphericalPolynomial-DXnlGMon.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/dds-CCgS8zmq.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/dds.pure-GxPY_zfe.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/dds.pure-DsmFpXWx.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/ddsTextureLoader-CksmWoIY.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/ddsTextureLoader-ynDyPYwv.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/default.fragment-CLdN55aJ.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/default.fragment-DFPZARfL.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/default.vertex-hpVkU2OZ.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/default.vertex-BIKeKseF.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/defaultUboDeclaration-B-2Y6yF1.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/defaultUboDeclaration-dOVy1F77.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/envTextureLoader-BJ6o68xV.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/envTextureLoader-j6ZKsMN1.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/exrTextureLoader-EGHqxheE.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/exrTextureLoader-CpNeUuFk.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphApplyForceBlock-DAS01LnC.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphApplyForceBlock-C-QARfm1.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphApplyImpulseBlock-CMzcV63U.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphApplyImpulseBlock-Bxls4CGO.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphArrayIndexBlock-Bo_GPN6J.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphBezierCurveEasingBlock-BuVUi2RL.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphBezierCurveEasingBlock-BQeJ2IuV.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphBinaryOperationBlock-CVGmsw8x.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphBinaryOperationBlock-BREmjMOC.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphBranchBlock-BfIcR38b.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphBranchBlock-WMggEd5Y.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphCachedOperationBlock-BItwxOg_.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphCachedOperationBlock-C2mkL6qz.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphCancelDelayBlock-DabMn7mT.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphCancelDelayBlock-Dwov_bJk.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphCodeExecutionBlock-B9nrso5H.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphCodeExecutionBlock-DFSN-doo.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphConditionalDataBlock-BTfkFqJa.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphConditionalDataBlock-CP2N09On.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphConsoleLogBlock-ZKRRrx3V.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphConsoleLogBlock-CLrJ-Vwb.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphConstantBlock-CA84SIpf.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphContextBlock-aaa4bUjB.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphContextBlock-COwmdNXC.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphCounterBlock-DHQ9YaXX.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphCounterBlock-C-jubjQe.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphDataSwitchBlock-D7-0KriE.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphDebounceBlock-CHLipwBM.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphDebounceBlock-D1OUOtLe.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphDebugBlock-B7BE97Pj.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphDebugBlock-7KeNCx0F.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphDoNBlock-BIYKnK2M.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphEasingBlock-B4WasDy3.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphEasingBlock-DvXGudwD.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphFlipFlopBlock-DrbNVT2u.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphFlipFlopBlock-BoNCkPPR.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphForLoopBlock-DDX0f-ID.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphFunctionReferenceBlock-CnlGraT6.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphFunctionReferenceBlock-CxKib2hj.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphGLTFDataProvider-D_p9Vc3n.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphGLTFDataProvider-DxHS-xsX.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphGetAngularVelocityBlock-CoO6JHmy.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphGetAngularVelocityBlock-BsHPZVx7.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphGetAssetBlock-fX6rKi20.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphGetLinearVelocityBlock-BGL2RtAb.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphGetLinearVelocityBlock-C2d1P3Ke.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphGetPhysicsMassPropertiesBlock-CxIjatfx.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphGetPhysicsMassPropertiesBlock-Djyyk4Ue.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphGetPropertyBlock-DT-QXVu_.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphGetPropertyBlock-DPVK6Ujc.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphGetSoundVolumeBlock-C4LKSI5R.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphGetSoundVolumeBlock-YPqug4Xx.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphGetVariableBlock-DIlaVi8M.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphGetVariableBlock-CeDkEfjT.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphIndexOfBlock-WMFo9Zat.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphInterpolationBlock-tG1kO4s_.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphInterpolationBlock-C6Ha2IFy.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphIsKeyPressedBlock-D6ExxkWF.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphIsKeyPressedBlock-DwNwh1ED.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphIsSoundPlayingBlock-vPEvDIRc.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphIsSoundPlayingBlock-CSQ69GkS.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphJsonPointerParserBlock-CF2NlYOP.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphKeyDownEventBlock-BABAmIeL.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphKeyDownEventBlock-TJfb-c5V.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphKeyUpEventBlock-BSUoekRK.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphKeyUpEventBlock-972Gp70f.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphKeyboardEventBlock-CZDsT79F.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphKeyboardEventBlock-DjsMLzCW.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphMathBlocks-DnoOtgUp.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphMathCombineExtractBlocks-CbwJeujD.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphMathCombineExtractBlocks-C0meI6XA.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphMatrixMathBlocks-CJ0nrwFc.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphMatrixMathBlocks-AZ0Dut5B.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphMeshPickEventBlock-CYCR7C7B.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphMeshPickEventBlock-Bdu7X63m.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphMultiGateBlock-nDUTaQiW.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphPauseAnimationBlock-C1yfh7U4.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphPauseAnimationBlock-Bo98FGgI.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphPauseSoundBlock-B8T3Qxmk.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphPauseSoundBlock-NyOx2_Qc.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphPhysicsCollisionEventBlock-B4vsEIEQ.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphPhysicsCollisionEventBlock-DXlZSDMq.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphPlayAnimationBlock-BuU8u7bh.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphPlayAnimationBlock-BTb6qtvS.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphPlaySoundBlock-OsFJerGp.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphPlaySoundBlock-CwVzvl6F.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphPointerDownEventBlock-B4myfwzY.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphPointerDownEventBlock-BlXDMdKv.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphPointerMoveEventBlock-C7kNYXVC.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphPointerMoveEventBlock-BwL2w-bR.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOutEventBlock-BwL1k9K3.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOutEventBlock-DuZwtRGA.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOverEventBlock-D7uPUz3m.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphPointerOverEventBlock-BsbFKC2I.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphPointerUpEventBlock-h2k1otta.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphPointerUpEventBlock-47HueEIY.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphReceiveCustomEventBlock-CKsih9DU.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphReceiveCustomEventBlock-Vlp1Pfhh.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSceneReadyEventBlock-MoEL2OgG.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSceneReadyEventBlock-Bv3z_n-M.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSceneTickEventBlock-DkhjsuEd.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSceneTickEventBlock-BkrpebZ7.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSendCustomEventBlock-CDJDoId5.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSendCustomEventBlock-CT8DxToU.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSequenceBlock-CKvAcfGB.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSequenceBlock-Dhl83MB1.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSetAngularVelocityBlock-DUVgv52d.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSetAngularVelocityBlock-CfzMuCd3.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSetDelayBlock-FhUaMqby.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSetLinearVelocityBlock-DdFINyIs.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSetLinearVelocityBlock-CcCCluEk.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSetPhysicsMotionTypeBlock-B_GSDzn3.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSetPhysicsMotionTypeBlock-SfshlY8X.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSetPropertyBlock-5WKrlvaE.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSetPropertyBlock-CFrveNvP.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSetSoundVolumeBlock-CdnrYD5B.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSetSoundVolumeBlock-C4cU_J1C.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSetVariableBlock-DD5gsKis.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSetVariableBlock-Bq13otbq.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSoundEndedEventBlock-fKBoAQlt.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSoundEndedEventBlock-BBlrlF5u.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphStopAnimationBlock-CDm85_Y9.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphStopAnimationBlock-a5WQ1hKl.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphStopSoundBlock-BY77RYv7.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphStopSoundBlock-B_Bbaeo0.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphSwitchBlock-2oBclun6.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphThrottleBlock-BoV3UuLi.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphThrottleBlock-BLTPbLE_.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphTransformCoordinatesSystemBlock-BO46AA3F.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphTransformCoordinatesSystemBlock-BeGhvF7X.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphTypeToTypeBlocks-D9lcLeo5.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphUnaryOperationBlock-C1RBwiu1.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphUnaryOperationBlock-CR02VJKy.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphVectorMathBlocks-CRPoi5bR.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphVectorMathBlocks-CfFpngcb.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphWaitAllBlock-Dx360Ra9.js +1 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphWhileLoopBlock-C2wNz7MU.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/flowGraphWhileLoopBlock-QgsZDLPG.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/fogFragment-DAcG7TCQ.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/fogFragment-Cg93oslV.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/fxaa.fragment-BE3AwpNA.js +55 -0
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/fxaa.vertex-CMqfyiIi.js +8 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-DHOD58HS.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-BRq9XV9F.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-DIlhNWGI.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/gaussianSplatting-DxqPxc0v.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-Csz9k2lc.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-B00n0JiL.js +2 -2
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-DyjC4p2I.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-D7uJ-MYw.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-BYdix1b9.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-CroG-Ltw.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-qaQwrhXF.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-DsyMsJOl.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-BiVyc4nS.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-CbuHwwYM.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-C9kJafLO.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-tTz36e4f.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-DSPVps-_.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-CVxpiWyd.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-BRLme_YW.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-bkXN2Njn.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/geometry.fragment-BcBx-JUz.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/geometry.fragment-CCiCITg1.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/geometry.fragment-rcQdOa18.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/geometry.fragment-Cgat0MCG.js +2 -2
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/geometry.vertex-BbL_FLfO.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/geometry.vertex-Cq04f5Ln.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/geometry.vertex-BTVcDQMd.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/geometry.vertex-DXSVIB_2.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/glowBlurPostProcess.fragment-BOrEH7qZ.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/glowBlurPostProcess.fragment-Bt1JV2fJ.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.fragment-Dw2pELM9.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.fragment-BjhP89KP.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.vertex-g4zSgWHl.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/glowMapGeneration.vertex-Faq0QVfW.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/glowMapMerge.fragment-BRI1RC0h.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/glowMapMerge.fragment-CKyVe1CV.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/glowMapMerge.vertex-OYXhsO5y.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/glowMapMerge.vertex-aH_PMq3S.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/harmonicsFunctions-B-rFa6Jw.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/harmonicsFunctions-DDZAS2wb.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/helperFunctions-CJuKh7zv.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/helperFunctions-D3Ga2k6-.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/iesTextureLoader-hQPlzY89.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/iesTextureLoader-BrYONFqP.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/index-BZ1jSBLc.css +1 -0
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/index-DMstpx40.js +7077 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-Bkkqf9Gf.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-C5b4KAEg.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-gsnhhxsW.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/kernelBlur.fragment-Derkbx9w.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-CuVvtzKn.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-CBMvYDT-.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-Di3ETd02.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/kernelBlur.vertex-CbO1lW2k.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-D8-BThIr.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-Dm6ylZqq.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-lHduxGLy.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-Dzmp-9kW.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/ktxTextureLoader-CsB3T93v.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/ktxTextureLoader-CGLuJ3CM.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/lightFragment-DomeLrOQ.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/lightFragment-DwljOAKX.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/logDepthDeclaration-DdSMU1vE.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/logDepthDeclaration-D5H1pvXu.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/logDepthVertex-CIYc6FKU.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/logDepthVertex-DCHHmUjz.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/mainUVVaryingDeclaration-CinwtRdE.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/mainUVVaryingDeclaration-C2r7x4SJ.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/meshUboDeclaration-BHuQNGCy.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/meshUboDeclaration-D66Dj1ce.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/oitFragment-CG7kMCvU.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/oitFragment-BblgJLs2.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-CRlYBc_-.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-ApisHGwV.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-Csz9EYJi.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/openpbr.fragment-DDzCgLmz.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-D8xRp_pg.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-B3hJbmMD.js +2 -2
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-DWzGweC9.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/openpbr.vertex-BwG88QJq.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/openpbrMaterial.pure-BVsTXLPP.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/openpbrMaterial.pure-DmktGnAB.js +3 -3
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/openpbrMaterialLoadingAdapter-Cl2qUNz7.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/openpbrMaterialLoadingAdapter-CrmmCGBW.js +3 -3
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-MOccHJLS.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-DEhGQe9C.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-C3FnopjH.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-KAR6124f.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-Bd8N4mLs.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-Bk1M96bB.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-DbIcgURU.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-CpsHcz7i.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/packingFunctions-B-RyPnvp.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/packingFunctions-Cf2bYblu.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/packingFunctions-B_LoQGE_.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/packingFunctions-DWpZhjFr.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/pass.fragment-CosRVAJR.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/pass.fragment--5PJYvG_.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/passCube.fragment-ByQLKcal.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/passCube.fragment-POHCEXUn.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/passCube.fragment-COrMlz4L.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/passCube.fragment-TFZnmLc2.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/pbr.fragment-Dp9qP0ik.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/pbr.fragment-DrJnd3FG.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/pbr.vertex-BEhyQo04.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/pbr.vertex-DrrEPvVg.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/pbrBRDFFunctions-MD5J9kNB.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/pbrBRDFFunctions-CAvUMvGl.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/pbrDebug-BMEohefD.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/pbrDebug-Fyywxry3.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/pbrIBLFunctions-BNSg1TYL.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/pbrIBLFunctions-In3pd2QO.js +1 -1
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/pbrMaterial.pure-CN4dqlHo.js +2 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/pbrMaterialLoadingAdapter-B9wrRf4Y.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/pbrMaterialLoadingAdapter-DZHtYHqD.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/pbrUboDeclaration-CaZ5IiXn.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/pbrUboDeclaration-C4rekOuR.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/postprocess.vertex-6O8OKxg1.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/postprocess.vertex-Dyu7cQ3W.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/procedural.vertex-CsPpF8ex.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/procedural.vertex-B-SrhRe7.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/procedural.vertex-CnLTJ0GC.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/procedural.vertex-BhJ051Av.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/reflectionFunction-FOkl7zGy.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/reflectionFunction-BjE54o2G.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/rgbdDecode.fragment-B3rgzhU8.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/rgbdDecode.fragment-B6W4l6bx.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-BQbjknQm.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-Chbio0ZH.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-DyCYq3cD.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-DpZ6_aaU.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/sceneUboDeclaration-qgAWTN28.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/sceneUboDeclaration-BCUaVlqI.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-pAIEAh33.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-CHELw20N.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-DNVQK8Xr.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/textureProcessor.fragment-DsZ-321q.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/tgaTextureLoader-BE-ozdBC.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/tgaTextureLoader-M2WvT-v9.js +1 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/vertexColorMixing-B7eY1nal.js → python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/vertexColorMixing-BjZfaTmT.js +1 -1
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/_viewer_static/index.html +2 -2
- python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/sw.js +122 -0
- python_cad_tools-0.1.23/src/python_cad_tools/build-info.json +1 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/build.py +27 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/cli.py +10 -0
- python_cad_tools-0.1.23/src/python_cad_tools/exporters/custom_view.py +479 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/renders.py +4 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/step.py +45 -1
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23/src/python_cad_tools.egg-info}/PKG-INFO +1 -1
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools.egg-info/SOURCES.txt +170 -168
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools.egg-info/scm_file_list.json +177 -168
- python_cad_tools-0.1.23/src/python_cad_tools.egg-info/scm_version.json +8 -0
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/asset-manifest.json +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/basisTextureLoader-C0CWWK6C.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/brdfTextureTools-BK5sbjI4.js +0 -2
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/dds-DTJCjwtR.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/dumpTools-2Vxp-avt.js +0 -2
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphArrayIndexBlock-BnBgFyIE.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphConstantBlock-Dynbc9i5.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphDataSwitchBlock-DCcjQH_2.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphDoNBlock-cMK6KEZp.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphForLoopBlock-Bbur2Xn2.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphGetAssetBlock-JakaK1JL.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphIndexOfBlock-DYf_o9uE.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphJsonPointerParserBlock-Af-cdpFu.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphMathBlocks-UEv4tVyC.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphMultiGateBlock-tAD2s18w.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSetDelayBlock-B0LkcVpW.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphSwitchBlock-BLuZLMgz.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphTypeToTypeBlocks-_O7ljeb3.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/flowGraphWaitAllBlock-B4u-Lnoz.js +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/index-Bi_hQlRi.css +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/index-aS20qDZO.js +0 -7007
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/assets/pbrMaterial.pure-CmT8POVY.js +0 -2
- python_cad_tools-0.1.21/src/python_cad_tools/_viewer_static/sw.js +0 -61
- python_cad_tools-0.1.21/src/python_cad_tools/build-info.json +0 -1
- python_cad_tools-0.1.21/src/python_cad_tools.egg-info/scm_version.json +0 -8
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/.gitattributes +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/.githooks/pre-push +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/.github/workflows/ci.yml +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/.github/workflows/downstream-compatibility.yml +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/.github/workflows/release-candidate.yml +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/.github/workflows/release.yml +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/.gitignore +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/.opencode/commands/autocommit.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/.opencode/tools/specrepo-autocommit.js +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/.opencode/tools/specrepo-autocommit.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/AGENTS.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/CLAUDE.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/LICENSE +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/MANIFEST.in +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/README.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/build-semantics.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/drawing-extensions.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/manifests.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/neutral-model.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/project-configuration.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/public-api.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/spikes/curved-geometry-ifc-bounds.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/spikes/format-feasibility.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/toolchain.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/two-tier-contract.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/docs/viewer-delivery.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/pyproject.toml +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/setup.cfg +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/__init__.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/__main__.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/_locking.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/_project_loader.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/_project_state.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/_scaffold.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/_transaction.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/_viewer_static/app.webmanifest +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/_viewer_static/assets/hdrTextureLoader-BGQvgh0h.js +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/_viewer_static/assets/mesh.vertexData.functions-ayNlGC5K.js +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/_viewer_static/favicon.svg +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/artifacts.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/context.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/determinism.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/drawings/__init__.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/drawings/_catalog.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/drawings/_validation.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/elements.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exceptions.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/__init__.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/base.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/drawings/__init__.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/drawings/annotations.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/drawings/dxf.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/drawings/model.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/drawings/pdf.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/drawings/primitives.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/drawings/projection.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/drawings/svg.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/glb.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/ifc.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/exporters/quantities.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/geometry.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/manifests.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/project_config.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/py.typed +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/recipes.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/runtime_sync.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/schemas/build-manifest-1.json +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/schemas/design-manifest-1.json +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/schemas/download-manifest-2.json +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/schemas/drawing-annotations-1.json +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/schemas/glb-manifest-1.json +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/schemas/ifc-validation-1.json +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/schemas/quantities-1.json +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/schemas/run-metadata-1.json +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/schemas/site-metadata-1.json +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/schemas/step-validation-1.json +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/site.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/templates/project/.gitignore +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/templates/project/README.md +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/templates/project/config.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/templates/project/drawing_annotations.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/templates/project/generated/.gitkeep +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/templates/project/model.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/templates/project/pyproject.toml +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/units.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools/validation.py +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools.egg-info/dependency_links.txt +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools.egg-info/entry_points.txt +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools.egg-info/requires.txt +0 -0
- {python_cad_tools-0.1.21 → python_cad_tools-0.1.23}/src/python_cad_tools.egg-info/top_level.txt +0 -0
|
@@ -7,6 +7,84 @@ stable release is published.
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- The camera does what the page can offer (makeitours-website#5 owner
|
|
13
|
+
amendment). On a Hosted page it captures exactly the elements visible now,
|
|
14
|
+
as Layers leave them, at the current camera angle; selection plays no role
|
|
15
|
+
and there is no "Nothing is selected" or hidden-selection prompt. The
|
|
16
|
+
document builder no longer has an element picker: the request covers the
|
|
17
|
+
captured visible elements. On BYOI and standalone pages the camera is
|
|
18
|
+
named "Project documents" and only opens the build's prebuilt drawings,
|
|
19
|
+
models and quantities, with no capture, view description or builder, under
|
|
20
|
+
a short note on what Hosted adds (documents of exactly the visible
|
|
21
|
+
elements at that angle, generated in the cloud).
|
|
22
|
+
- The viewer is canvas-first ([makeitours-website#5](https://github.com/brandon-benge/makeitours-website/issues/5)).
|
|
23
|
+
- The Model / Drawings / Files / Build rail and its side panel are gone.
|
|
24
|
+
A Layers button in the canvas's upper-left opens the model tree as a
|
|
25
|
+
floating drawer on desktop and a nonmodal bottom sheet (40%, up to 65%)
|
|
26
|
+
on phones. It is closed by default, never resizes the canvas or moves
|
|
27
|
+
the camera, and keeps its selection, visibility and expanded groups when
|
|
28
|
+
closed and reopened.
|
|
29
|
+
- Multi-selection: row checkboxes, Shift/Ctrl/Cmd-click in the tree or on
|
|
30
|
+
the canvas, "Select all visible" and "Clear selection". Isolate and Frame
|
|
31
|
+
selected act on the whole selection. Hiding a category no longer clears
|
|
32
|
+
the selection.
|
|
33
|
+
- A Low–High "Navigation sensitivity" slider replaces the Speed dropdown:
|
|
34
|
+
1× to 100× on a log scale, applied to orbit (square root, so about 10×
|
|
35
|
+
at High), pan and zoom.
|
|
36
|
+
- The persistent "Validated build" badge is gone. The build manifest's
|
|
37
|
+
validation record is read honestly: only an explicit pass with no
|
|
38
|
+
warnings is validated; warnings, failure and a missing or malformed
|
|
39
|
+
record show a discreet canvas indicator that explains the state, lists
|
|
40
|
+
warnings and shows the build details.
|
|
41
|
+
|
|
42
|
+
### Added
|
|
43
|
+
|
|
44
|
+
- A camera button captures the current view. It freezes the camera and the
|
|
45
|
+
explicit selection (an empty selection asks before using all visible
|
|
46
|
+
elements; selected-but-hidden elements are included or left out by
|
|
47
|
+
choice), renders a PNG of only the included elements without overlays or
|
|
48
|
+
selection glow, and offers a versioned view description
|
|
49
|
+
(`urn:python-cad-tools:schema:view-description:1`: CAD Z-up millimetre
|
|
50
|
+
camera, build hash and sorted stable IDs) whose SHA-256 is the capture
|
|
51
|
+
identity. The build's existing files are listed with honest whole-model
|
|
52
|
+
scopes; none is presented as a drawing of the captured view.
|
|
53
|
+
- STEP products are now named by each element's stable ID (the writer turns
|
|
54
|
+
`.` into `_`), and `exporters.step.step_subset` writes only chosen elements
|
|
55
|
+
from a built STEP file without running project code. Long assembly
|
|
56
|
+
occurrences are joined onto one line so builds stay byte-identical.
|
|
57
|
+
- Captured-view standard sheets include a true section: the included mesh is
|
|
58
|
+
cut at the middle of its depth along Y, with the cut outline on the
|
|
59
|
+
`ANNOTATION_SECTION` layer and the visible edges behind it.
|
|
60
|
+
- When the MakeItOurs app opens a Hosted project's page (it sets
|
|
61
|
+
`window.makeItOursHost.documents` and a `makeItOursDocuments` message
|
|
62
|
+
handler), the capture sheet offers a document request builder: the person
|
|
63
|
+
chooses captured-view outputs, standard drawing formats and views, model
|
|
64
|
+
exports, quantities and which captured elements to keep. The page posts
|
|
65
|
+
only those choices and the narrowed view description to the app for
|
|
66
|
+
review; it holds no credentials. BYOI and standalone pages never show it.
|
|
67
|
+
- `python-cad captured-view --view <view.json> --format png|svg|dxf|pdf
|
|
68
|
+
--destination <dir>` (and `build.captured_view_project`) turns a viewer
|
|
69
|
+
capture into documents of only its elements, without rebuilding.
|
|
70
|
+
- The PNG uses exactly the captured camera (eye, target, up, vertical
|
|
71
|
+
field of view, viewport) with no re-framing.
|
|
72
|
+
- SVG, DXF and PDF are one hidden-line sheet: an orthographic projection
|
|
73
|
+
along the captured direction, drawing each element's outer edges and
|
|
74
|
+
folds over 20° that a depth test shows are visible. Dimensions are
|
|
75
|
+
projected extents in millimetres; an oblique view says they are not true
|
|
76
|
+
lengths, and the sheet says the camera image is not to scale.
|
|
77
|
+
- Unknown or stale element IDs fail with `unknown_selected_element`.
|
|
78
|
+
- `exporters.custom_view.write_custom_view_from_glb` makes the same captured-view
|
|
79
|
+
documents, plus plan, front and side sheets of only the captured elements,
|
|
80
|
+
from a build's own GLB. It reads only the mesh file, so no project code
|
|
81
|
+
runs, and the output is tied to the build it came from. In a local check, a
|
|
82
|
+
browser capture and a PNG made from the site's GLB overlapped at 99.3%.
|
|
83
|
+
- A host app can supply the project's current display name, which replaces
|
|
84
|
+
the build-time model title as plain text: `window.makeItOursHost =
|
|
85
|
+
{ displayName }` before load, or `window.makeItOursViewer.setDisplayName()`
|
|
86
|
+
afterwards. Names are trimmed, 1–80 characters, without control characters.
|
|
87
|
+
|
|
10
88
|
## [0.1.21] - 2026-10-27
|
|
11
89
|
|
|
12
90
|
### Added
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"entries":[{"media_type":"application/manifest+json","path":"app.webmanifest","sha256":"80ad27439df65fb6defc9e30ec2fe782226622e006675e157fac4d145b000661","size":389},{"media_type":"text/javascript; charset=utf-8","path":"assets/animationGroup-CWWigNuG.js","sha256":"142a450cdd9deb4333ab8a120f9b24c4aefc2704567ebcae59996e862d480323","size":35489},{"media_type":"text/javascript; charset=utf-8","path":"assets/bakedVertexAnimation-CsvToT2G.js","sha256":"c604dd5efbb7a6e56db1d61a49d6587fd8dd9a3552d1dc5e3b28565d374523d9","size":15843},{"media_type":"text/javascript; charset=utf-8","path":"assets/basisTextureLoader-B4pSwZUY.js","sha256":"2ca1342741aba1dd9ea5f1b41e0faedb612cf19400434ab339eac588485ae1e6","size":7960},{"media_type":"text/javascript; charset=utf-8","path":"assets/brdfTextureTools-BNEbZjdc.js","sha256":"31ed2d58f12dc4971d974cdba59650ce400b497d64914fcc061c1026ac8c77fe","size":60470},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpFragment-Nq43ZTAC.js","sha256":"2b0d373715eea212880647db3345df13cde9d9464ff3cdf6102b8dc4199836df","size":8075},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpVertex-XOKqV93Q.js","sha256":"8752ddf203c7d9da5029a307ce64e81228a59012d6b76d35bcc8fcec1eef611e","size":698},{"media_type":"text/javascript; charset=utf-8","path":"assets/bumpVertexDeclaration-BAa9GdEq.js","sha256":"04f4185b959403a1ca567209511dc5dd768a8accb44f087835f93f19c3d7782b","size":393},{"media_type":"text/javascript; charset=utf-8","path":"assets/clipPlaneFragment-C0mhzlyB.js","sha256":"002ed940620d46d6b217698455dedc3d2591a1acd02af527b3afdb6047dc080c","size":1275},{"media_type":"text/javascript; charset=utf-8","path":"assets/clipPlaneVertex-COLxe99z.js","sha256":"b9c220edbd77e98303c3828e11d6b81503bba86f47d7256e881d27dc1893d308","size":1356},{"media_type":"text/javascript; charset=utf-8","path":"assets/cubemapToSphericalPolynomial-DXnlGMon.js","sha256":"e3a0b3ae301a44ca28fa21b48ed061d00651bd4b4709ee1c35db971116ec1a4a","size":3667},{"media_type":"text/javascript; charset=utf-8","path":"assets/dds-CCgS8zmq.js","sha256":"936e12e7065cc7f6c716fdcf9600c22921b242a2ece8e11d12f4d72725afe2c2","size":161},{"media_type":"text/javascript; charset=utf-8","path":"assets/dds.pure-DsmFpXWx.js","sha256":"7a71ee6e3a129bf5edd9b3beb557c2e021ae905bbae7da5b414626d21aa1f908","size":7046},{"media_type":"text/javascript; charset=utf-8","path":"assets/ddsTextureLoader-ynDyPYwv.js","sha256":"cffc12f2aed4dc50896207aed531ebfda3ab0f01e224cd0d8b29a466841825bc","size":1310},{"media_type":"text/javascript; charset=utf-8","path":"assets/default.fragment-DFPZARfL.js","sha256":"ea7511f93f2f420959b922fa92bdc6be7909e75358bce84fc57f43f878911175","size":25362},{"media_type":"text/javascript; charset=utf-8","path":"assets/default.vertex-BIKeKseF.js","sha256":"a32ad2342856391be7d4a2e43c8849b96dba8231c666c149460da2a7265a43da","size":9451},{"media_type":"text/javascript; charset=utf-8","path":"assets/defaultUboDeclaration-dOVy1F77.js","sha256":"03ee648c4a3e35271351f876fa6fac24f329925fed9db547e9ecd42fc9b28cb4","size":1624},{"media_type":"text/javascript; charset=utf-8","path":"assets/envTextureLoader-j6ZKsMN1.js","sha256":"9669a2bf5a4af1d71c553283aca4be2b730f3e0e0fa56a3b44e9a82486a7a814","size":1649},{"media_type":"text/javascript; charset=utf-8","path":"assets/exrTextureLoader-CpNeUuFk.js","sha256":"36144bf6d866395b5f72a83fc808bb4661e90322f07e9c8c0631ed17ba9fbff3","size":14187},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphApplyForceBlock-C-QARfm1.js","sha256":"6aa8df75590099e7b8246891e21c89e1993a26e9e51f9946fbf0707a3de4007c","size":675},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphApplyImpulseBlock-Bxls4CGO.js","sha256":"04f9fd1523859d689327bfee9ce939835afc3c27f2194d082b57dfbee69b4f93","size":691},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphArrayIndexBlock-Bo_GPN6J.js","sha256":"c33db0b5f79048c7bef9c4e67ce1cdc21ab323d347a9187c12cd57f094ededf4","size":650},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBezierCurveEasingBlock-BQeJ2IuV.js","sha256":"cdca36c7b01d06c0101501b580a21ece3348a7b026c3500f2bc652d8dca95d1f","size":938},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBinaryOperationBlock-BREmjMOC.js","sha256":"4854ec7cf2b8237d0aa0a0959ddc77a6f20dc2a5395253e49a1ad9e29d42632b","size":375},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphBranchBlock-WMggEd5Y.js","sha256":"01428fa3ba531399afd7ef18496a92b039eb78980f30b0221981499f30aab750","size":529},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCachedOperationBlock-C2mkL6qz.js","sha256":"2d9fcaeedc3d2aaa258181a7fc1248d96de67710486bb0a458357480465307ca","size":688},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCancelDelayBlock-Dwov_bJk.js","sha256":"cca0b5ddf02e1e99689ce8091452dfc7b0768475032a8e5d8d084aeeaac01215","size":592},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCodeExecutionBlock-DFSN-doo.js","sha256":"459a1ab48373d1008fc71877d9073aa9c332f9d2d20f22e8f24475eff114a209","size":470},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConditionalDataBlock-CP2N09On.js","sha256":"9a6ecfe2c621928850e498424d17331ef3a0a0f1923f38ae7bce1cf58b93a23a","size":634},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConsoleLogBlock-CLrJ-Vwb.js","sha256":"0fe14dd3ee8b840f308752317130afcca1bac912f24e76f723728e498c9a8e62","size":1416},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphConstantBlock-CA84SIpf.js","sha256":"2d92ec5424f34f50433f51f43518d5ea6ef5c85b00b7e684a25603b262166a95","size":499},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphContextBlock-COwmdNXC.js","sha256":"0cccc697922441867b3e3eba065c0af86d36b76951801bd37b53343596b12592","size":540},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphCounterBlock-C-jubjQe.js","sha256":"2e5b88257b5b5e237172ad5046dfb59abcc75e650a6cdd048b3eab8e39d61cf5","size":630},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDataSwitchBlock-D7-0KriE.js","sha256":"060f245c787336c3534e70ef043d370df028a154b838e27d18987b65e0c1d805","size":905},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDebounceBlock-D1OUOtLe.js","sha256":"a2ad0bbb4ff6296e2770c3ee53c2b888c3ae849dac3f7737db6c98a8faaa2651","size":768},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDebugBlock-7KeNCx0F.js","sha256":"1e7b811d38bb7c43fdcc1bc5079b71579ecd5a3854cacaa51d45ebea5dd73244","size":1450},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphDoNBlock-BIYKnK2M.js","sha256":"82c2a2a0074e6ce99c9d82990f5602221c1b5683efaa298c1be17253e2be8e5f","size":771},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphEasingBlock-DvXGudwD.js","sha256":"019d7cf02dfeea8c259bfbcdda72ff07f48b2229d61de23f444e4d706dd77d0d","size":1627},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphFlipFlopBlock-BoNCkPPR.js","sha256":"5730b3fd59766c3a568bd4dd941fd9dddcdde3c07300c34fd0f146c8bfbdc6a7","size":678},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphForLoopBlock-DDX0f-ID.js","sha256":"b5871b76ecf9c99c18bd9aa86cc2291a048fbff5c9fcd1c74edb7f7e087325e3","size":1109},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphFunctionReferenceBlock-CxKib2hj.js","sha256":"d212c48a4c4074d5a9bd3d9a00cad20bf5f359500274033eef4e0c059341768f","size":714},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGLTFDataProvider-DxHS-xsX.js","sha256":"a248e35a2a5747a33749b04b4f2cf8184e8a01fb2540e8a1591b932c92373716","size":418},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetAngularVelocityBlock-BsHPZVx7.js","sha256":"01deab0737dd1475b8455efef4cda3b2ebf88fa5658ef8e47a3f61edfbb5eea0","size":657},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetAssetBlock-fX6rKi20.js","sha256":"f5b381470dd94d8059eeacca3cc3e80199998e7bd832a6421328550ec1063f6c","size":639},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetLinearVelocityBlock-C2d1P3Ke.js","sha256":"4aa935f3553938207da374a5d5874253bd2b95ea224c4ab29fe3abd309049730","size":652},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetPhysicsMassPropertiesBlock-Djyyk4Ue.js","sha256":"4e3fdcd829d0fb7872c973520136d7c5d281fa615ef4d19d086a437f34b1876c","size":801},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetPropertyBlock-DPVK6Ujc.js","sha256":"a9ba9a72dc153c196ac1407368eee9cf743d9c1df9c3ad2d5177968641d008c3","size":930},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetSoundVolumeBlock-YPqug4Xx.js","sha256":"42688b8cd892fdac13c93682728d8900828246fd87bf0bbf6f391c082f997a88","size":485},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphGetVariableBlock-CeDkEfjT.js","sha256":"94e84e167292b298a018579692c72fe98f36280a0aa8185eb6de92d087edb340","size":545},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIndexOfBlock-WMFo9Zat.js","sha256":"044587f67e3a109865f0ea6e006c142044079e6f6c3df4a7cf94685f4e674ed0","size":608},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphInterpolationBlock-C6Ha2IFy.js","sha256":"035e490b7e173fe10ff37446a864a7092ada764774ae05eebe77944b4827f28b","size":2089},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIsKeyPressedBlock-DwNwh1ED.js","sha256":"4657ed048b6b1a73c83afbd8990ecb11208846004aa6403ea837fbc471bc5fa9","size":1162},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphIsSoundPlayingBlock-CSQ69GkS.js","sha256":"cabce839a0ad6b6c3e5670f2c522ac9be875baa2d10844e7dddb765e36b3ce94","size":501},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphJsonPointerParserBlock-CF2NlYOP.js","sha256":"b1d542b7734a42600b7c4c16594a715b52ae5b9c687ad789e3ace0d95406d368","size":3028},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyDownEventBlock-TJfb-c5V.js","sha256":"b2a847acfaed080f820323be5bea978103aac0730ca583f33e52ba47a0b5e0b9","size":489},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyUpEventBlock-972Gp70f.js","sha256":"0f8844b30edda22fbf6881dbe860500fe7c3fe0ecd1e58df2f72c160f234bf29","size":282},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphKeyboardEventBlock-DjsMLzCW.js","sha256":"c4fccca03bcf03480f9d37c9628036a816621164ec03c6d9234cff79ac73ce40","size":962},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMathBlocks-DnoOtgUp.js","sha256":"a0f13633ae3af00f04ca13f106735b77b0019393ece8529795618f8a0cf2db4d","size":18512},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMathCombineExtractBlocks-C0meI6XA.js","sha256":"9ba0a52b4a56ede7a032beb3fae210d37e291ab7a1c4b61a57371e3436189c5d","size":7966},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMatrixMathBlocks-AZ0Dut5B.js","sha256":"c37e308ee9bb296db04ec3ca3b78faafd68541a085a24144cf4ea364ae03b370","size":3570},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMeshPickEventBlock-Bdu7X63m.js","sha256":"c95b555248339886bd8941e492af70f5743159af549f801779da19ea050121c2","size":1394},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphMultiGateBlock-nDUTaQiW.js","sha256":"a9b7e3b069e0ab1a56c61649aa33e8967e141776aa74efb2de83b26c31f71d89","size":1661},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPauseAnimationBlock-Bo98FGgI.js","sha256":"8b504b3ecdc95016298abc32673dd420bd0eeac12a7e503a0b2e26d8d494c414","size":455},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPauseSoundBlock-NyOx2_Qc.js","sha256":"b4b217efe0590193254a420ccee86b4977839fae6580ea1a50f104078e0411d8","size":552},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPhysicsCollisionEventBlock-DXlZSDMq.js","sha256":"0caa1ed75852b754532407f89581f52c9328fa4dca657a843bc9044361c11c90","size":1678},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPlayAnimationBlock-BTb6qtvS.js","sha256":"35b0ff7af7fcc31a552f403c31d70a6170a748ba16d4dab0aa3854c4cfd4c2a6","size":3736},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPlaySoundBlock-CwVzvl6F.js","sha256":"3ff5368db930591b503ceeb340840cb382f1492b1cf34c0c4234de462da96d94","size":782},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerDownEventBlock-BlXDMdKv.js","sha256":"18136ad42f00036ae039acbe9c079d280b7253eb518e951a1f99058386741354","size":940},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerMoveEventBlock-BwL2w-bR.js","sha256":"4f436a72bbd6bac5aaa30d3c5a04d9c7f28798113bf80733015d99fed2a00985","size":958},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerOutEventBlock-DuZwtRGA.js","sha256":"a3d85a378332d01f49561154c9ec8c0fb521ad5b210df185aa2610efe1226633","size":831},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerOverEventBlock-BsbFKC2I.js","sha256":"4eb81570cebc4e95dfcb13fd066a54d6ad09d1cbacea265b9ff1a2b6abc1f256","size":842},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphPointerUpEventBlock-47HueEIY.js","sha256":"66b2de4f980a5fc5c511053c72eb13a21979a3c5151e6da81fe7422a309f7476","size":930},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphReceiveCustomEventBlock-Vlp1Pfhh.js","sha256":"eda0cde55b3b5828a8ef29e39b0497be5c7f4205593377ecbb30ef7a7836adf3","size":1530},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSceneReadyEventBlock-Bv3z_n-M.js","sha256":"cb187841ae5d3a295d83e4499d4e72767e88f2dbe042e4ef5e8c0a1a88bbb5de","size":452},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSceneTickEventBlock-BkrpebZ7.js","sha256":"f38bea390ba04b01e2e1d3fc6d1011448fbfbde751913b77a915e541709bd109","size":635},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSendCustomEventBlock-CT8DxToU.js","sha256":"39f4b0925ae973136c3478ed2a5292c5418f2d8a439c880434f23407ad62d35c","size":926},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSequenceBlock-Dhl83MB1.js","sha256":"6f82a249378671acd5b0358134cbf972cf61f1fbe0d8755c188c73bb724e95f8","size":777},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetAngularVelocityBlock-CfzMuCd3.js","sha256":"4b26aef67219b2d64154bec6faab07f8baf5e582dda13728c318216fc722c017","size":633},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetDelayBlock-FhUaMqby.js","sha256":"fef27e96d29f3128e59c224b03ceadc4a4f8e9697e5b33dc962310afaa30cf12","size":4184},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetLinearVelocityBlock-CcCCluEk.js","sha256":"f50c1247acd62d7f7bf174689775d5e92226a6da9cdeea13aabfa9dc628c29a0","size":628},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetPhysicsMotionTypeBlock-SfshlY8X.js","sha256":"88ee82c53cb359a2dd010eb1c612713acbc714021d1cc869b430de2d0f22b637","size":644},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetPropertyBlock-CFrveNvP.js","sha256":"2b9bf76dee04fb217ecb5da98a130986748184f850afe9b640eb5c3f263a5bbc","size":1408},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetSoundVolumeBlock-C4cU_J1C.js","sha256":"b67a90c59b7f11ab20ac43633d3abd8beaa29b5b7e14c1fd1d7746f42167e72a","size":601},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSetVariableBlock-Bq13otbq.js","sha256":"047bd48702c0af0e1e8f51752e069a9a41d5ca84f7b4126ddc23652c1a467772","size":1228},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSoundEndedEventBlock-BBlrlF5u.js","sha256":"9b199a5597aa860be2c522e9c95bce0589a5e595c69b39f634654e6e3dea694d","size":967},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphStopAnimationBlock-a5WQ1hKl.js","sha256":"abb2b72e6751846c855a0fd344b11eb65f46e14d4560bc68f6d21bdc4fc3e40e","size":1889},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphStopSoundBlock-B_Bbaeo0.js","sha256":"77fd0e1f60fa75047caa6968caf87f8ff7324c7e1eb2809cf7636ba209378250","size":496},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphSwitchBlock-2oBclun6.js","sha256":"a73b41510e15c1f4fcf18c057fd01f12041adfe91200345c5e9927f9bceea6ae","size":1135},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphThrottleBlock-BLTPbLE_.js","sha256":"416286a65ad3a2208d3f85f32d64b0976a1c8625b03913bed7d14693054fa311","size":1363},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphTransformCoordinatesSystemBlock-BeGhvF7X.js","sha256":"4f2b81b4a939ff110d4fd5f3b7344e6d8e23b5fcfa03d9534438674d2a019501","size":968},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphTypeToTypeBlocks-D9lcLeo5.js","sha256":"6edd38a34a2d4f06dc4ab0d3b5fbd876424632c0fa5978a763036b6e179a7ef3","size":1282},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphUnaryOperationBlock-CR02VJKy.js","sha256":"bf9ae20b147578b2dc28341a3b2f7e438557a1cafa0823e19b62182ab3585457","size":303},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphVectorMathBlocks-CfFpngcb.js","sha256":"4a41639b6301bd98db2229b562661157a27f12a635059b1f9d8bfa9b4368bcb7","size":4726},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphWaitAllBlock-Dx360Ra9.js","sha256":"e1bb092e185a691368e2ecbe8ea8c56da9d97b17faecfca74b59cca7dd55b294","size":1532},{"media_type":"text/javascript; charset=utf-8","path":"assets/flowGraphWhileLoopBlock-QgsZDLPG.js","sha256":"65fe7da9e15fecfaa350113068c26e65f44b87e05ca3c0b340d6b49f8599dcce","size":863},{"media_type":"text/javascript; charset=utf-8","path":"assets/fogFragment-Cg93oslV.js","sha256":"b06ddf5e617a17a6e3d9ba4ab849e0229749a1710c7de916741fd77985bd5560","size":1471},{"media_type":"text/javascript; charset=utf-8","path":"assets/fxaa.fragment-BE3AwpNA.js","sha256":"19e5730b0879b4b39ff25ee89ac3b5a815fab9c0e7db53661a84aaaebb2dc19e","size":6431},{"media_type":"text/javascript; charset=utf-8","path":"assets/fxaa.vertex-CMqfyiIi.js","sha256":"9c12042c6b6939be5f79f0749d43c499f0b91b932c08889713481086a9065d33","size":1438},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting-BRq9XV9F.js","sha256":"2eccf3e14b250aa6c340f52a4cc6c277d4b2cf6d15b86f88c5dc24a9a98b3e26","size":14631},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting-DxqPxc0v.js","sha256":"4158979c39b09c3f863db2273eccd5cd54cbd08c159ebbe54e8e2968e204c31f","size":14395},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.fragment-B00n0JiL.js","sha256":"eeaa5b8265cafb1e4a04167d3367acc0a7317f34d49cc71bd4c4d20c324a3ac9","size":1541},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.fragment-D7uJ-MYw.js","sha256":"fb9927146ea1a2bb124209e4b966d2c874feaf2a1e498a734a147540b7c955b2","size":1812},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.vertex-CroG-Ltw.js","sha256":"cac569d9044357e1b1565900da578636d41fa9ca69f5cbb9c912a7f4a92e268d","size":3748},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplatting.vertex-DsyMsJOl.js","sha256":"f0028a73752f239c7544577ebe641ba9c373d9b5cf424f403866dfc844e86414","size":4904},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.fragment-CbuHwwYM.js","sha256":"7b7ed4faedc7c14819c090977fb7988d4ff48ac9f2897c7762e73c84ef9dd092","size":1984},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.fragment-tTz36e4f.js","sha256":"30f331bff42cf435cbb6f3d9ee778f16ee08db3013d38a56a8764156cefb60c5","size":1488},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.vertex-CVxpiWyd.js","sha256":"959ea7dc876523d9bccb7d73583b8b6a932807b239cc107e648ee984a207e3e5","size":2611},{"media_type":"text/javascript; charset=utf-8","path":"assets/gaussianSplattingVoxel.vertex-bkXN2Njn.js","sha256":"79cffe779615a5f85e68d0ab5f15322585b8dbd4da41eb13929d471c5b1e69c7","size":1802},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.fragment-CCiCITg1.js","sha256":"4d97cdb759d40cb76807fd1d9cd879de2f1ddcd72f060c1724d477dbeeeac205","size":10410},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.fragment-Cgat0MCG.js","sha256":"df070b80ee4b014f9f34ae50808687a0a8282eff9e99c5666a8882f061561d6f","size":8171},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.vertex-Cq04f5Ln.js","sha256":"ef537939f26eaafc0f208e7702e2b751520dce894ae5ba9f040f782f898ea2a7","size":7601},{"media_type":"text/javascript; charset=utf-8","path":"assets/geometry.vertex-DXSVIB_2.js","sha256":"e72f485465af8b514412c974706c4d4abf96b83f6fc9a4b09748ca108f45e4c6","size":9012},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowBlurPostProcess.fragment-Bt1JV2fJ.js","sha256":"b18402cf11296f6965bf4d4579d636c2e5cea2c976ee734c1eb98f70d30e124b","size":1409},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapGeneration.fragment-BjhP89KP.js","sha256":"d64f111d0e1d0ef10cae0b938981b693d4495f0c87b2c796433b7d8a4f3f214f","size":2530},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapGeneration.vertex-Faq0QVfW.js","sha256":"b34b03922f46b6c86641464e2ea9d5bbb1711b1700a530fe33d705a7cb990efb","size":2798},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapMerge.fragment-CKyVe1CV.js","sha256":"afeeb873547753ecda34229e421920d9f3623f6e0159187b53ad5398fda30bf3","size":1059},{"media_type":"text/javascript; charset=utf-8","path":"assets/glowMapMerge.vertex-aH_PMq3S.js","sha256":"03afb457531764455e99210ea1f807b1b49ae75cd460eccb921f4422738ea23c","size":545},{"media_type":"text/javascript; charset=utf-8","path":"assets/harmonicsFunctions-DDZAS2wb.js","sha256":"ae200efeaaedf6c1f9ce3b59fd292c5269f40e94616b5b1745fc0eb0d1bc395f","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-D3Ga2k6-.js","sha256":"f0edfc9d42dc1356cc3ca76c687ce0defb1db0ad1941019aee5ed4fa67738afc","size":6488},{"media_type":"text/javascript; charset=utf-8","path":"assets/iesTextureLoader-BrYONFqP.js","sha256":"0a86d266e9f62a24db9c4c14ac2ec9711782c6365a5e55bae867121d8c162a14","size":2701},{"media_type":"text/css; charset=utf-8","path":"assets/index-BZ1jSBLc.css","sha256":"13385df540e01fcd38760e518e2712b274b98a1671010616820e23d71ab989e8","size":15848},{"media_type":"text/javascript; charset=utf-8","path":"assets/index-DMstpx40.js","sha256":"1587a1f35a49de1c72c23c5b3e5c5143e60260eb78b160ca1700c449e915be05","size":2345255},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.fragment-C5b4KAEg.js","sha256":"d1a570d53785ca29ca9b3fec88655baf91d4182c593755be19631503a6fe3246","size":2851},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.fragment-Derkbx9w.js","sha256":"5ec6b60c67145d7acd2aad36ed1ea9c479e88d15627b00b6a2cd800c9f400ab6","size":2311},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.vertex-CBMvYDT-.js","sha256":"11616f78e4955d54f419a407e73f17c07a62d73efe78bbf4e58238dfb3e79778","size":899},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlur.vertex-CbO1lW2k.js","sha256":"8d6e17f5719ee2fb7ea797b4d5c20ee9f9b48b08183bddea36b6a3b9dc394cf9","size":1064},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlurVaryingDeclaration-Dm6ylZqq.js","sha256":"78c95e1de9f2741304955eba35868e980774e54aa25ce004b23d737b65a67cc0","size":211},{"media_type":"text/javascript; charset=utf-8","path":"assets/kernelBlurVaryingDeclaration-Dzmp-9kW.js","sha256":"2502dbf6109db1f3c6768bd9e569f8a9e3fbb0c6f40a8878d2c53aeb77347a57","size":221},{"media_type":"text/javascript; charset=utf-8","path":"assets/ktxTextureLoader-CGLuJ3CM.js","sha256":"062c0e0a4707ad29608016fee58bc59d2ab0cebdc98f11e1452e5f80df85a6b9","size":14979},{"media_type":"text/javascript; charset=utf-8","path":"assets/lightFragment-DwljOAKX.js","sha256":"44a8c5622703a9432e59df6b5169a9f04cb90dacf51f81e1611082f4e577274b","size":22605},{"media_type":"text/javascript; charset=utf-8","path":"assets/logDepthDeclaration-D5H1pvXu.js","sha256":"b354c9aee1c18d86dd02c2bb4756d438bb11256c684b8fa9f537ccd1b9e9af45","size":280},{"media_type":"text/javascript; charset=utf-8","path":"assets/logDepthVertex-DCHHmUjz.js","sha256":"64f6daf81161fc4da0f2544a2e334427c2fa8a82cbd31a799acf183b8cdcceb2","size":826},{"media_type":"text/javascript; charset=utf-8","path":"assets/mainUVVaryingDeclaration-C2r7x4SJ.js","sha256":"284362b5a2003b54ecd2b07487db33e5744f7411cf7d2d9830e543ed1587ce70","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-D66Dj1ce.js","sha256":"72a86a0b6e577c7dd0cde37eda3c41e1a842026eff23745b3d28d84f35a2fbd6","size":278},{"media_type":"text/javascript; charset=utf-8","path":"assets/oitFragment-BblgJLs2.js","sha256":"760c508e2e4bf79aa904217a0a3b8ea41f959b21376c72c053a5021e6ccdc9af","size":52427},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.fragment-ApisHGwV.js","sha256":"4abbb1959f0cc730f8887466d84ba9574ade6d7bf33c2e644dc9c4f6feac4412","size":86994},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.fragment-DDzCgLmz.js","sha256":"a53c3ab2f45bde96163a93e9def3438b86528ec545312f9a9f0131fd81f43ad0","size":89838},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.vertex-B3hJbmMD.js","sha256":"43bb908f8b0011260c31040702469053d9056e62a1a047de19446e4ec4322f71","size":20214},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbr.vertex-BwG88QJq.js","sha256":"2dcbffe4da02253be467d666e978bae27cdac25de8aada77738763a506b88269","size":17340},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrMaterial.pure-DmktGnAB.js","sha256":"9f8f0545d45bbb2e8a89fb18a39b04ab4f8643ec472d771cd6049e47ee197e10","size":134156},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrMaterialLoadingAdapter-CrmmCGBW.js","sha256":"6b72d27477d3e7e2d8375b44762d0855ae335ea3ff7b0590fa67b489650b8fb9","size":33218},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrTransmissionLayerData-DEhGQe9C.js","sha256":"dae736672d4cec49b85688f72fd9bd4ef0720cce7cea882d56376584980c10da","size":17708},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrTransmissionLayerData-KAR6124f.js","sha256":"4e8f48e63f89c9ecfc4f3a085c40960467bf3f3154de51b9b03bcd5b8aaa5701","size":17043},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrUboDeclaration-Bk1M96bB.js","sha256":"ac2a5d69626c475a047d9570bb809747b98b8f9b083d9176165c9a89cc220215","size":5221},{"media_type":"text/javascript; charset=utf-8","path":"assets/openpbrUboDeclaration-CpsHcz7i.js","sha256":"904094b32059a8033fd33ad4c963e587e750f5738218f6db3881543685e29aad","size":3791},{"media_type":"text/javascript; charset=utf-8","path":"assets/packingFunctions-Cf2bYblu.js","sha256":"2048690ef83d5f6be7bb87a207674b1a4496b1db3c7fbc50371997c949595308","size":528},{"media_type":"text/javascript; charset=utf-8","path":"assets/packingFunctions-DWpZhjFr.js","sha256":"133e2542c47e979e98e7ac6ccccf1967d21717cc857d3d83e9b6fb42efbdbdc5","size":562},{"media_type":"text/javascript; charset=utf-8","path":"assets/pass.fragment--5PJYvG_.js","sha256":"13ce565723978a699e2a00c2dbcd2c965fed8b72300cb6fc646f53aee358be77","size":451},{"media_type":"text/javascript; charset=utf-8","path":"assets/passCube.fragment-POHCEXUn.js","sha256":"6ec9cbec3af256cc819507aa788a73ffb41ef9c40034aae4729462deff746a3f","size":1131},{"media_type":"text/javascript; charset=utf-8","path":"assets/passCube.fragment-TFZnmLc2.js","sha256":"27469b029a565736ee7246d3bb1d27a6f9a0ed87f9244291443b99d94d3b09b8","size":822},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbr.fragment-DrJnd3FG.js","sha256":"bcd3a46ccb8b451318adad4ef03c392e841108dd898742d128034d1af83a5f7b","size":93721},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbr.vertex-DrrEPvVg.js","sha256":"a3aca4b0ba9bd447c5d8da7e19ac47878ff7c5164375aa20872035ea8d6dfa66","size":14451},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrBRDFFunctions-CAvUMvGl.js","sha256":"73e48d0f310941f5dbefe45a71b27151e567e55fcd1e53ea49c15bfadef01b5a","size":12760},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrDebug-Fyywxry3.js","sha256":"56a5633c2f9e4cd02b63ae9e8683689a9554da6f7e4e474edb8b93729128a34f","size":43522},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrIBLFunctions-In3pd2QO.js","sha256":"a18697acf685b2c9afc4016fdcd4742252383901970ca3d8fef2994665888be8","size":2720},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrMaterial.pure-CN4dqlHo.js","sha256":"da208be9a83fce7119d4e8d17a35300a34e9d1fca6c09bbc0823553a21833218","size":134888},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrMaterialLoadingAdapter-DZHtYHqD.js","sha256":"554fd8b42344391b921338643ed0b9ef18c9b6034256aaaa8824287812655687","size":12426},{"media_type":"text/javascript; charset=utf-8","path":"assets/pbrUboDeclaration-C4rekOuR.js","sha256":"3f83c7fa869b2830af2adf32a7398719d049e07c38f0a22eda5b736ecf9b1eec","size":2398},{"media_type":"text/javascript; charset=utf-8","path":"assets/postprocess.vertex-Dyu7cQ3W.js","sha256":"186342190c9e597cc6608841607c509c60379e30c8e349a530ab6cee9ec44df2","size":583},{"media_type":"text/javascript; charset=utf-8","path":"assets/procedural.vertex-B-SrhRe7.js","sha256":"0750f1de6e9c0d661145156cb475d34d17042cf984c748ced450e8c5f39d869e","size":612},{"media_type":"text/javascript; charset=utf-8","path":"assets/procedural.vertex-BhJ051Av.js","sha256":"7f525d1ed1254932ed4325f69bb3abde1d3aa4ccfa3614b5af0213bd60eea6f2","size":472},{"media_type":"text/javascript; charset=utf-8","path":"assets/reflectionFunction-BjE54o2G.js","sha256":"23db8165e684591c6143ec8d979a748a5480851aa78b424f2e891bc74b8919d7","size":5231},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdDecode.fragment-B6W4l6bx.js","sha256":"4af9ca779fe5a6efaebba03c5f49bf934719204e9e0f3af3c60ebc07605070ad","size":671},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdEncode.fragment-Chbio0ZH.js","sha256":"0c5b95c9384f88a6374b2f723d35589c637f9da6800948fb483b73cf3fa2f05e","size":477},{"media_type":"text/javascript; charset=utf-8","path":"assets/rgbdEncode.fragment-DpZ6_aaU.js","sha256":"4d11c9b51464575fda4e13451e5cbeef2bd4fdffd69dbc5dd8f66c5615aa61f5","size":662},{"media_type":"text/javascript; charset=utf-8","path":"assets/sceneUboDeclaration-BCUaVlqI.js","sha256":"63e12f19eb7479ff7aef3fc6ec88c4c9ed3e811ae760d6d244b290dfdf9c197e","size":435},{"media_type":"text/javascript; charset=utf-8","path":"assets/textureProcessor.fragment-CHELw20N.js","sha256":"af2cd876bdf7a300f6f53b4181d6cd5d3e69772010c97b9c6fb5de998af4d596","size":3490},{"media_type":"text/javascript; charset=utf-8","path":"assets/textureProcessor.fragment-DsZ-321q.js","sha256":"1cc638a9d65d2ee7fb5dfd1d43ce2cb0cb43e285f37ea9009e42ffbfabdb30ad","size":4377},{"media_type":"text/javascript; charset=utf-8","path":"assets/tgaTextureLoader-M2WvT-v9.js","sha256":"ae81059f65b9c21488d0bf5455dbb4560a1060d401c3cde2157f7d0153885a70","size":3527},{"media_type":"text/javascript; charset=utf-8","path":"assets/vertexColorMixing-BjZfaTmT.js","sha256":"38bf5477d02253e9bca949a4efc25dc3bd6026dafc215566fd4db463f2858cb5","size":22140},{"media_type":"image/svg+xml","path":"favicon.svg","sha256":"0af8d9f546677c4655fbd25bcded1339b5de603d92808201b14dbee6301dd846","size":2222},{"media_type":"text/html; charset=utf-8","path":"index.html","sha256":"7d32f8ff80d56bf531dd95b0591bc94bdb9f89da66d46786a46c0394754995e8","size":723},{"media_type":"text/javascript; charset=utf-8","path":"sw.js","sha256":"60ad840f556e65a4226633d0222eb2ce447627dac537c5d15afcf54aa5f44b5d","size":5019}],"schema_id":"urn:python-cad-tools:schema:viewer-assets:1","schema_version":1}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a$ as A,M as F,b0 as B,b1 as C,b2 as k,b3 as D,b4 as W,b5 as K,b6 as U,az as P,a0 as T,Q as S,V as Y,b7 as z,b8 as H,aP as G,b9 as w,ba as X,bb as J,bc as q}from"./index-aS20qDZO.js";class Q{get currentFrame(){return this._currentFrame}get weight(){return this._weight}get currentValue(){return this._currentValue}get targetPath(){return this._targetPath}get target(){return this._currentActiveTarget}get isAdditive(){return this._host&&this._host.isAdditive}constructor(e,t,i,n){if(this._events=new Array,this._currentFrame=0,this._originalValue=new Array,this._originalBlendValue=null,this._offsetsCache={},this._highLimitsCache={},this._stopped=!1,this._blendingFactor=0,this._currentValue=null,this._currentActiveTarget=null,this._directTarget=null,this._targetPath="",this._weight=1,this._absoluteFrameOffset=0,this._previousElapsedTime=0,this._yoyoDirection=1,this._previousAbsoluteFrame=0,this._targetIsArray=!1,this._coreRuntimeAnimation=null,this._animation=t,this._target=e,this._scene=i,this._host=n,this._activeTargets=[],t._runtimeAnimations.push(this),this._animationState={key:0,repeatCount:0,loopMode:this._getCorrectLoopMode()},this._animation.dataType===A.ANIMATIONTYPE_MATRIX&&(this._animationState.workValue=F.Zero()),this._keys=this._animation.getKeys(),this._minFrame=this._keys[0].frame,this._maxFrame=this._keys[this._keys.length-1].frame,this._minFrame!==0){const a={frame:0,value:this._keys[0].value};this._keys.splice(0,0,a)}if(this._target instanceof Array){let a=0;for(const l of this._target)this._preparePath(l,a),this._getOriginalValues(a),a++;this._targetIsArray=!0}else this._preparePath(this._target),this._getOriginalValues(),this._targetIsArray=!1,this._directTarget=this._activeTargets[0];const s=t.getEvents();if(s&&s.length>0)for(const a of s)this._events.push(a._clone());this._enableBlending=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.enableBlending:this._animation.enableBlending}_preparePath(e,t=0){const i=this._animation.targetPropertyPath;if(i.length>1){let n=e;for(let s=0;s<i.length-1;s++){const a=i[s];if(n=n[a],n===void 0)throw new Error(`Invalid property (${a}) in property path (${i.join(".")})`)}this._targetPath=i[i.length-1],this._activeTargets[t]=n}else this._targetPath=i[0],this._activeTargets[t]=e;if(this._activeTargets[t][this._targetPath]===void 0)throw new Error(`Invalid property (${this._targetPath}) in property path (${i.join(".")})`)}get animation(){return this._animation}reset(e=!1){if(e)if(this._target instanceof Array){let t=0;for(const i of this._target)this._originalValue[t]!==void 0&&this._setValue(i,this._activeTargets[t],this._originalValue[t],-1,t),t++}else this._originalValue[0]!==void 0&&this._setValue(this._target,this._directTarget,this._originalValue[0],-1,0);this._offsetsCache={},this._highLimitsCache={},this._currentFrame=0,this._blendingFactor=0;for(let t=0;t<this._events.length;t++)this._events[t].isDone=!1}isStopped(){return this._stopped}dispose(){const e=this._animation.runtimeAnimations.indexOf(this);e>-1&&this._animation.runtimeAnimations.splice(e,1)}setValue(e,t){if(this._targetIsArray){for(let i=0;i<this._target.length;i++){const n=this._target[i];this._setValue(n,this._activeTargets[i],e,t,i)}return}this._setValue(this._target,this._directTarget,e,t,0)}_getOriginalValues(e=0){let t;const i=this._activeTargets[e];if(A.InheritOriginalValueFromActiveAnimations){const n=this._scene._activeAnimatables;for(let s=0;s<n.length;s++){const a=n[s]._runtimeAnimations;for(let l=0;l<a.length;l++){const r=a[l];if(r!==this&&r._targetPath===this._targetPath){for(let h=0;h<r._activeTargets.length;h++)if(r._activeTargets[h]===i&&r._originalValue[h]!==void 0){r._originalValue[h]&&r._originalValue[h].clone?this._originalValue[e]=r._originalValue[h].clone():this._originalValue[e]=r._originalValue[h];return}}}}}i.getLocalMatrix&&this._targetPath==="_matrix"?t=i.getLocalMatrix():t=i[this._targetPath],t&&t.clone?this._originalValue[e]=t.clone():this._originalValue[e]=t}_registerTargetForLateAnimationBinding(e,t){const i=e.target;this._scene._registeredForLateAnimationBindings.pushNoDuplicate(i),i._lateAnimationHolders||(i._lateAnimationHolders={}),i._lateAnimationHolders[e.targetPath]||(i._lateAnimationHolders[e.targetPath]={totalWeight:0,totalAdditiveWeight:0,animations:[],additiveAnimations:[],originalValue:t}),e.isAdditive?(i._lateAnimationHolders[e.targetPath].additiveAnimations.push(e),i._lateAnimationHolders[e.targetPath].totalAdditiveWeight+=e.weight):(i._lateAnimationHolders[e.targetPath].animations.push(e),i._lateAnimationHolders[e.targetPath].totalWeight+=e.weight)}_setValue(e,t,i,n,s){if(this._currentActiveTarget=t,this._weight=n,this._enableBlending&&this._blendingFactor<=1){if(!this._originalBlendValue){const l=t[this._targetPath];l.clone?this._originalBlendValue=l.clone():this._originalBlendValue=l}this._originalBlendValue.m?A.AllowMatrixDecomposeForInterpolation?this._currentValue?F.DecomposeLerpToRef(this._originalBlendValue,i,this._blendingFactor,this._currentValue):this._currentValue=F.DecomposeLerp(this._originalBlendValue,i,this._blendingFactor):this._currentValue?F.LerpToRef(this._originalBlendValue,i,this._blendingFactor,this._currentValue):this._currentValue=F.Lerp(this._originalBlendValue,i,this._blendingFactor):this._currentValue=A._UniversalLerp(this._originalBlendValue,i,this._blendingFactor);const a=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.blendingSpeed:this._animation.blendingSpeed;this._blendingFactor+=a}else this._currentValue?this._currentValue.copyFrom?this._currentValue.copyFrom(i):this._currentValue=i:i?.clone?this._currentValue=i.clone():this._currentValue=i;n!==-1?this._registerTargetForLateAnimationBinding(this,this._originalValue[s]):this._animationState.loopMode===A.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT?this._currentValue.addToRef?this._currentValue.addToRef(this._originalValue[s],t[this._targetPath]):t[this._targetPath]=this._originalValue[s]+this._currentValue:t[this._targetPath]=this._currentValue,e.markAsDirty&&e.markAsDirty(this._animation.targetProperty)}_getCorrectLoopMode(){return this._target&&this._target.animationPropertiesOverride?this._target.getClassName?.()==="MorphTarget"&&this._target._animationPropertiesOverride==null?this._animation.loopMode:this._target.animationPropertiesOverride.loopMode:this._animation.loopMode}goToFrame(e,t=-1){const i=this._animation.getKeys();e<i[0].frame?e=i[0].frame:e>i[i.length-1].frame&&(e=i[i.length-1].frame);const n=this._events;if(n.length)for(let a=0;a<n.length;a++)n[a].onlyOnce||(n[a].isDone=n[a].frame<e);this._currentFrame=e;const s=this._animation._interpolate(e,this._animationState);this.setValue(s,t)}_prepareForSpeedRatioChange(e){const t=this._previousElapsedTime*(this._animation.framePerSecond*e)/1e3;this._absoluteFrameOffset=this._previousAbsoluteFrame-t}animate(e,t,i,n,s,a=-1){const l=this._animation,r=l.targetPropertyPath;if(!r||r.length<1)return this._stopped=!0,!1;let h=!0,g;const u=this._events;let c;if(this._coreRuntimeAnimation)c=i-t,g=this._coreRuntimeAnimation.currentFrame,this._currentFrame=g,this._animationState.repeatCount=this._coreRuntimeAnimation._animationState.repeatCount,this._animationState.highLimitValue=this._coreRuntimeAnimation._animationState.highLimitValue,this._animationState.offsetValue=this._coreRuntimeAnimation._animationState.offsetValue;else{(t<this._minFrame||t>this._maxFrame)&&(t=this._minFrame),(i<this._minFrame||i>this._maxFrame)&&(i=this._maxFrame),c=i-t;let _,m=e*(l.framePerSecond*s)/1e3+this._absoluteFrameOffset,b=0,V=!1;const O=n&&this._animationState.loopMode===A.ANIMATIONLOOPMODE_YOYO;if(O){const d=(m-t)/c,p=Math.sin(d*Math.PI);m=Math.abs(p)*c+t;const L=p>=0?1:-1;this._yoyoDirection!==L&&(V=!0),this._yoyoDirection=L}if(this._previousElapsedTime=e,this._previousAbsoluteFrame=m,!n&&i>=t&&(m>=c&&s>0||m<=0&&s<0))h=!1,b=l.evaluate(i);else if(!n&&t>=i&&(m<=c&&s<0||m>=0&&s>0))h=!1,b=l.evaluate(t);else if(this._animationState.loopMode!==A.ANIMATIONLOOPMODE_CYCLE){const d=i.toString()+t.toString();if(!this._offsetsCache[d]){this._animationState.repeatCount=0,this._animationState.loopMode=A.ANIMATIONLOOPMODE_CYCLE;const p=l._interpolate(t,this._animationState),y=l._interpolate(i,this._animationState);switch(this._animationState.loopMode=this._getCorrectLoopMode(),l.dataType){case A.ANIMATIONTYPE_FLOAT:this._offsetsCache[d]=y-p;break;case A.ANIMATIONTYPE_QUATERNION:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_VECTOR3:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_VECTOR2:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_SIZE:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_COLOR3:this._offsetsCache[d]=y.subtract(p);break}this._highLimitsCache[d]=y}b=this._highLimitsCache[d],_=this._offsetsCache[d]}if(_===void 0)switch(l.dataType){case A.ANIMATIONTYPE_FLOAT:_=0;break;case A.ANIMATIONTYPE_QUATERNION:_=K;break;case A.ANIMATIONTYPE_VECTOR3:_=W;break;case A.ANIMATIONTYPE_VECTOR2:_=D;break;case A.ANIMATIONTYPE_SIZE:_=k;break;case A.ANIMATIONTYPE_COLOR3:_=C;break;case A.ANIMATIONTYPE_COLOR4:_=B;break}if(this._host&&this._host.syncRoot){const d=this._host.syncRoot,p=(d.masterFrame-d.fromFrame)/(d.toFrame-d.fromFrame);g=t+c*p}else m>0&&t>i||m<0&&t<i?g=h&&c!==0?i+m%c:t:g=h&&c!==0?t+m%c:i;if(!O&&(s>0&&this.currentFrame>g||s<0&&this.currentFrame<g)||O&&V){this._onLoop();for(let d=0;d<u.length;d++)u[d].onlyOnce||(u[d].isDone=!1);this._animationState.key=s>0?0:l.getKeys().length-1}this._currentFrame=g,this._animationState.repeatCount=c===0?0:m/c>>0,this._animationState.highLimitValue=b,this._animationState.offsetValue=_}const f=l._interpolate(g,this._animationState);if(this.setValue(f,a),u.length){for(let _=0;_<u.length;_++)if(c>=0&&g>=u[_].frame&&u[_].frame>=t||c<0&&g<=u[_].frame&&u[_].frame<=t){const m=u[_];m.isDone||(m.onlyOnce&&(u.splice(_,1),_--),m.isDone=!0,m.action(g))}}return h||(this._stopped=!0),h}}class I{get syncRoot(){return this._syncRoot}get masterFrame(){return this._runtimeAnimations.length===0?0:this._runtimeAnimations[0].currentFrame}get weight(){return this._weight}set weight(e){if(e===-1){this._weight=-1;return}this._weight=Math.min(Math.max(e,0),1)}get speedRatio(){return this._speedRatio}set speedRatio(e){for(let t=0;t<this._runtimeAnimations.length;t++)this._runtimeAnimations[t]._prepareForSpeedRatioChange(e);this._speedRatio=e,this._goToFrame!==null&&this.goToFrame(this._goToFrame)}get elapsedTime(){return this._localDelayOffset===null?0:this._scene._animationTime-this._localDelayOffset}constructor(e,t,i=0,n=100,s=!1,a=1,l,r,h,g=!1,u=0){this.target=t,this.fromFrame=i,this.toFrame=n,this.loopAnimation=s,this.onAnimationEnd=l,this.onAnimationLoop=h,this.isAdditive=g,this.playOrder=u,this._localDelayOffset=null,this._pausedDelay=null,this._manualJumpDelay=null,this._runtimeAnimations=new Array,this._paused=!1,this._speedRatio=1,this._weight=-1,this._previousWeight=-1,this._syncRoot=null,this._frameToSyncFromJump=null,this._goToFrame=null,this.disposeOnEnd=!0,this.animationStarted=!1,this.onAnimationEndObservable=new P,this.onAnimationLoopObservable=new P,this._scene=e,r&&this.appendAnimations(t,r),this._speedRatio=a,e._activeAnimatables.push(this)}syncWith(e){if(this._syncRoot=e,e){const t=this._scene._activeAnimatables.indexOf(this);t>-1&&(this._scene._activeAnimatables.splice(t,1),this._scene._activeAnimatables.push(this))}return this}getAnimations(){return this._runtimeAnimations}appendAnimations(e,t){for(let i=0;i<t.length;i++){const n=t[i],s=new Q(e,n,this._scene,this);s._onLoop=()=>{this.onAnimationLoopObservable.notifyObservers(this),this.onAnimationLoop&&this.onAnimationLoop()},this._runtimeAnimations.push(s)}}getAnimationByTargetProperty(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)if(t[i].animation.targetProperty===e)return t[i].animation;return null}getRuntimeAnimationByTargetProperty(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)if(t[i].animation.targetProperty===e)return t[i];return null}reset(){const e=this._runtimeAnimations;for(let t=0;t<e.length;t++)e[t].reset(!0);this._localDelayOffset=null,this._pausedDelay=null}enableBlending(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)t[i].animation.enableBlending=!0,t[i].animation.blendingSpeed=e}disableBlending(){const e=this._runtimeAnimations;for(let t=0;t<e.length;t++)e[t].animation.enableBlending=!1}goToFrame(e,t=!1){const i=this._runtimeAnimations;if(i[0]){const n=i[0].animation.framePerSecond;this._frameToSyncFromJump=this._frameToSyncFromJump??i[0].currentFrame;const s=this.speedRatio===0?0:(e-this._frameToSyncFromJump)/n*1e3/this.speedRatio;this._manualJumpDelay=-s}for(let n=0;n<i.length;n++)i[n].goToFrame(e,t?this._weight:-1);this._goToFrame=e}get paused(){return this._paused}pause(){this._paused||(this._paused=!0)}restart(){this._paused=!1}_raiseOnAnimationEnd(){this.onAnimationEnd&&this.onAnimationEnd(),this.onAnimationEndObservable.notifyObservers(this)}stop(e,t,i=!1,n=!1){if(e||t){const s=this._scene._activeAnimatables.indexOf(this);if(s>-1){const a=this._runtimeAnimations;for(let l=a.length-1;l>=0;l--){const r=a[l];e&&r.animation.name!=e||t&&!t(r.target)||(r.dispose(),a.splice(l,1))}a.length==0&&(i||this._scene._activeAnimatables.splice(s,1),n||this._raiseOnAnimationEnd())}}else{const s=this._scene._activeAnimatables.indexOf(this);if(s>-1){i||this._scene._activeAnimatables.splice(s,1);const a=this._runtimeAnimations;for(let l=0;l<a.length;l++)a[l].dispose();this._runtimeAnimations.length=0,n||this._raiseOnAnimationEnd()}}}async waitAsync(){return await new Promise(e=>{this.onAnimationEndObservable.add(()=>{e(this)},void 0,void 0,this,!0)})}_animate(e){if(this._paused)return this.animationStarted=!1,this._pausedDelay===null&&(this._pausedDelay=e),!0;if(this._localDelayOffset===null?(this._localDelayOffset=e,this._pausedDelay=null):this._pausedDelay!==null&&(this._localDelayOffset+=e-this._pausedDelay,this._pausedDelay=null),this._manualJumpDelay!==null&&(this._localDelayOffset+=this.speedRatio<0?-this._manualJumpDelay:this._manualJumpDelay,this._manualJumpDelay=null,this._frameToSyncFromJump=null),this._goToFrame=null,!I.ProcessPausedAnimatables&&this._weight===0&&this._previousWeight===0)return!0;this._previousWeight=this._weight;let t=!1;const i=this._runtimeAnimations;let n;for(n=0;n<i.length;n++){const a=i[n].animate(e-this._localDelayOffset,this.fromFrame,this.toFrame,this.loopAnimation,this._speedRatio,this._weight);t=t||a}if(this.animationStarted=t,!t){if(this.disposeOnEnd)for(n=this._scene._activeAnimatables.indexOf(this),this._scene._activeAnimatables.splice(n,1),n=0;n<i.length;n++)i[n].dispose();this._raiseOnAnimationEnd(),this.disposeOnEnd&&(this.onAnimationEnd=null,this.onAnimationLoop=null,this.onAnimationLoopObservable.clear(),this.onAnimationEndObservable.clear())}return t}}I.ProcessPausedAnimatables=!1;function $(o){if(o.totalWeight===0&&o.totalAdditiveWeight===0)return o.originalValue;let e=1;const t=T.Vector3[0],i=T.Vector3[1],n=T.Quaternion[0];let s=0;const a=o.animations[0],l=o.originalValue;let r,h=!1;if(o.totalWeight<1)r=1-o.totalWeight,l.decompose(i,n,t);else{if(s=1,e=o.totalWeight,r=a.weight/e,r==1)if(o.totalAdditiveWeight)h=!0;else return a.currentValue;a.currentValue.decompose(i,n,t)}if(!h){i.scaleInPlace(r),t.scaleInPlace(r),n.scaleInPlace(r);for(let u=s;u<o.animations.length;u++){const c=o.animations[u];if(c.weight===0)continue;r=c.weight/e;const f=T.Vector3[2],_=T.Vector3[3],m=T.Quaternion[1];c.currentValue.decompose(_,m,f),_.scaleAndAddToRef(r,i),m.scaleAndAddToRef(S.Dot(n,m)>0?r:-r,n),f.scaleAndAddToRef(r,t)}n.normalize()}for(let u=0;u<o.additiveAnimations.length;u++){const c=o.additiveAnimations[u];if(c.weight===0)continue;const f=T.Vector3[2],_=T.Vector3[3],m=T.Quaternion[1];c.currentValue.decompose(_,m,f),_.multiplyToRef(i,_),Y.LerpToRef(i,_,c.weight,i),n.multiplyToRef(m,m),S.SlerpToRef(n,m,c.weight,n),f.scaleAndAddToRef(c.weight,t)}const g=a?a._animationState.workValue:T.Matrix[0].clone();return F.ComposeToRef(i,n,t,g),g}function j(o,e){if(o.totalWeight===0&&o.totalAdditiveWeight===0)return e;const t=o.animations[0],i=o.originalValue;let n=e;if(o.totalWeight===0&&o.totalAdditiveWeight>0)n.copyFrom(i);else if(o.animations.length===1){if(S.SlerpToRef(i,t.currentValue,Math.min(1,o.totalWeight),n),o.totalAdditiveWeight===0)return n}else if(o.animations.length>1){let s=1,a,l;if(o.totalWeight<1){const h=1-o.totalWeight;a=[],l=[],a.push(i),l.push(h)}else{if(o.animations.length===2&&(S.SlerpToRef(o.animations[0].currentValue,o.animations[1].currentValue,o.animations[1].weight/o.totalWeight,e),o.totalAdditiveWeight===0))return e;a=[],l=[],s=o.totalWeight}for(let h=0;h<o.animations.length;h++){const g=o.animations[h];a.push(g.currentValue),l.push(g.weight/s)}let r=0;for(let h=0;h<a.length;){if(!h){S.SlerpToRef(a[h],a[h+1],l[h+1]/(l[h]+l[h+1]),e),n=e,r=l[h]+l[h+1],h+=2;continue}r+=l[h],S.SlerpToRef(n,a[h],l[h]/r,n),h++}}for(let s=0;s<o.additiveAnimations.length;s++){const a=o.additiveAnimations[s];a.weight!==0&&(n.multiplyToRef(a.currentValue,T.Quaternion[0]),S.SlerpToRef(n,T.Quaternion[0],a.weight,n))}return n}function Z(o){if(o._registeredForLateAnimationBindings.length){for(let e=0;e<o._registeredForLateAnimationBindings.length;e++){const t=o._registeredForLateAnimationBindings.data[e];for(const i in t._lateAnimationHolders){const n=t._lateAnimationHolders[i],s=n.animations[0],a=n.originalValue;if(a==null)continue;const l=A.AllowMatrixDecomposeForInterpolation&&a.m;let r=t[i];if(l)r=$(n);else if(a.w!==void 0)r=j(n,r||S.Identity());else{let g=0,u=1;const c=s&&s._animationState.loopMode===A.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT;if(n.totalWeight<1)c?r=a.clone?a.clone():a:s&&a.scale?r=a.scale(1-n.totalWeight):s?r=a*(1-n.totalWeight):a.clone?r=a.clone():r=a;else if(s){u=n.totalWeight;const f=s.weight/u;f!==1?s.currentValue.scale?r=s.currentValue.scale(f):r=s.currentValue*f:r=s.currentValue,c&&(r.addToRef?r.addToRef(a,r):r+=a),g=1}for(let f=g;f<n.animations.length;f++){const _=n.animations[f],m=_.weight/u;if(m)_.currentValue.scaleAndAddToRef?_.currentValue.scaleAndAddToRef(m,r):r+=_.currentValue*m;else continue}for(let f=0;f<n.additiveAnimations.length;f++){const _=n.additiveAnimations[f],m=_.weight;if(m)_.currentValue.scaleAndAddToRef?_.currentValue.scaleAndAddToRef(m,r):r+=_.currentValue*m;else continue}}t[i]=r}t._lateAnimationHolders={}}o._registeredForLateAnimationBindings.reset()}}function tt(o,e){e&&(e.prototype.copyAnimationRange=function(t,i,n,s=!1,a=null){this.animations.length===0&&(this.animations.push(new A(this.name,"_matrix",t.animations[0].framePerSecond,A.ANIMATIONTYPE_MATRIX,0)),this.animations[0].setKeys([]));const l=t.animations[0].getRange(i);if(!l)return!1;const r=l.from,h=l.to,g=t.animations[0].getKeys(),u=t.length,c=t.getParent(),f=this.getParent(),_=s&&c&&u&&this.length&&u!==this.length,m=_&&f&&c?f.length/c.length:1,b=s&&!f&&a&&(a.x!==1||a.y!==1||a.z!==1),V=this.animations[0].getKeys();let O,d,p;for(let y=0,L=g.length;y<L;y++)O=g[y],O.frame>=r&&O.frame<=h&&(s?(p=O.value.clone(),_?(d=p.getTranslation(),p.setTranslation(d.scaleInPlace(m))):b&&a?(d=p.getTranslation(),p.setTranslation(d.multiplyInPlace(a))):p=O.value):p=O.value,V.push({frame:O.frame+n,value:p}));return this.animations[0].createRange(i,r+n,h+n),!0}),o&&(o.prototype._animate=function(t){if(!this.animationsEnabled)return;const i=U.Now;if(!this._animationTimeLast){if(this._pendingData.length>0)return;this._animationTimeLast=i}this.deltaTime=t!==void 0?t:this.useConstantAnimationDeltaTime?16:(i-this._animationTimeLast)*this.animationTimeScale,this._animationTimeLast=i;const n=this._activeAnimatables;if(n.length===0)return;this._animationTime+=this.deltaTime;const s=this._animationTime;for(let a=0;a<n.length;a++){const l=n[a];!l._animate(s)&&l.disposeOnEnd&&a--}Z(this)},o.prototype.sortActiveAnimatables=function(){this._activeAnimatables.sort((t,i)=>t.playOrder-i.playOrder)},o.prototype.beginWeightedAnimation=function(t,i,n,s=1,a,l=1,r,h,g,u,c=!1){const f=this.beginAnimation(t,i,n,a,l,r,h,!1,g,u,c);return f.weight=s,f},o.prototype.beginAnimation=function(t,i,n,s,a=1,l,r,h=!0,g,u,c=!1){if(a<0){const _=i;i=n,n=_,a=-a}i>n&&(a=-a),h&&this.stopAnimation(t,void 0,g),r||(r=new I(this,t,i,n,s,a,l,void 0,u,c));const f=g?g(t):!0;if(t.animations&&f&&r.appendAnimations(t,t.animations),t.getAnimatables){const _=t.getAnimatables();for(let m=0;m<_.length;m++)this.beginAnimation(_[m],i,n,s,a,l,r,h,g,u)}return r.reset(),r},o.prototype.beginHierarchyAnimation=function(t,i,n,s,a,l=1,r,h,g=!0,u,c,f=!1){const _=t.getDescendants(i),m=[];m.push(this.beginAnimation(t,n,s,a,l,r,h,g,u,void 0,f));for(const b of _)m.push(this.beginAnimation(b,n,s,a,l,r,h,g,u,void 0,f));return m},o.prototype.beginDirectAnimation=function(t,i,n,s,a,l=1,r,h,g=!1){if(l<0){const c=n;n=s,s=c,l=-l}return n>s&&(l=-l),new I(this,t,n,s,a,l,r,i,h,g)},o.prototype.beginDirectHierarchyAnimation=function(t,i,n,s,a,l,r,h,g,u=!1){const c=t.getDescendants(i),f=[];f.push(this.beginDirectAnimation(t,n,s,a,l,r,h,g,u));for(const _ of c)f.push(this.beginDirectAnimation(_,n,s,a,l,r,h,g,u));return f},o.prototype.getAnimatableByTarget=function(t){for(let i=0;i<this._activeAnimatables.length;i++)if(this._activeAnimatables[i].target===t)return this._activeAnimatables[i];return null},o.prototype.getAllAnimatablesByTarget=function(t){const i=[];for(let n=0;n<this._activeAnimatables.length;n++)this._activeAnimatables[n].target===t&&i.push(this._activeAnimatables[n]);return i},o.prototype.stopAnimation=function(t,i,n){const s=this.getAllAnimatablesByTarget(t);for(const a of s)a.stop(i,n)},o.prototype.stopAllAnimations=function(){if(this._activeAnimatables){for(let t=0;t<this._activeAnimatables.length;t++)this._activeAnimatables[t].stop(void 0,void 0,!0);this._activeAnimatables.length=0}for(const t of this.animationGroups)t.stop()})}let x=!1;function et(){x||(x=!0,tt(H,z))}class it{getClassName(){return"TargetedAnimation"}constructor(e){this.parent=e,this.uniqueId=q.UniqueId}serialize(){const e={};return e.animation=this.animation.serialize(),e.targetId=this.target.id,e.targetUniqueId=this.target.uniqueId,e}}class v{get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this.syncWithMask(!0))}syncWithMask(e=!1){if(!this.mask&&!e){this._numActiveAnimatables=this._targetedAnimations.length;return}this._numActiveAnimatables=0;for(let t=0;t<this._animatables.length;++t){const i=this._animatables[t];!this.mask||this.mask.disabled||this.mask.retainsTarget(i.target.name)?(this._numActiveAnimatables++,i.paused&&i.restart()):i.paused||i.pause()}}removeUnmaskedAnimations(){if(!(!this.mask||this.mask.disabled)){for(let e=0;e<this._animatables.length;++e){const t=this._animatables[e];this.mask.retainsTarget(t.target.name)||(t.stop(),this._animatables.splice(e,1),--e)}for(let e=0;e<this._targetedAnimations.length;e++){const t=this._targetedAnimations[e];this.mask.retainsTarget(t.target.name)||(this._targetedAnimations.splice(e,1),--e)}}}get from(){return this._from}set from(e){if(this._from!==e){this._from=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.fromFrame=this._from}}}get to(){return this._to}set to(e){if(this._to!==e){this._to=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.toFrame=this._to}}}get isStarted(){return this._isStarted}get isPlaying(){return this._isStarted&&!this._isPaused}get speedRatio(){return this._speedRatio}set speedRatio(e){if(this._speedRatio!==e){this._speedRatio=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.speedRatio=this._speedRatio}}}get loopAnimation(){return this._loopAnimation}set loopAnimation(e){if(this._loopAnimation!==e){this._loopAnimation=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.loopAnimation=this._loopAnimation}}}get isAdditive(){return this._isAdditive}set isAdditive(e){if(this._isAdditive!==e){this._isAdditive=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.isAdditive=this._isAdditive}}}get weight(){return this._weight}set weight(e){this._weight!==e&&(this._weight=e,this.setWeightForAllAnimatables(this._weight))}get targetedAnimations(){return this._targetedAnimations}get animatables(){return this._animatables}get children(){return this._targetedAnimations}get playOrder(){return this._playOrder}set playOrder(e){if(this._playOrder!==e&&(this._playOrder=e,this._animatables.length>0)){for(let t=0;t<this._animatables.length;t++)this._animatables[t].playOrder=this._playOrder;this._scene.sortActiveAnimatables()}}get enableBlending(){return this._enableBlending}set enableBlending(e){if(this._enableBlending!==e&&(this._enableBlending=e,e!==null))for(let t=0;t<this._targetedAnimations.length;++t)this._targetedAnimations[t].animation.enableBlending=e}get blendingSpeed(){return this._blendingSpeed}set blendingSpeed(e){if(this._blendingSpeed!==e&&(this._blendingSpeed=e,e!==null))for(let t=0;t<this._targetedAnimations.length;++t)this._targetedAnimations[t].animation.blendingSpeed=e}getLength(e,t){e=e??this._from,t=t??this._to;const i=this.targetedAnimations[0].animation.framePerSecond*this._speedRatio;return(t-e)/i}getScene(){return this._scene}constructor(e,t=null,i=-1,n=0){this.name=e,this._targetedAnimations=new Array,this._animatables=new Array,this._from=Number.MAX_VALUE,this._to=-Number.MAX_VALUE,this._speedRatio=1,this._loopAnimation=!1,this._isAdditive=!1,this._weight=-1,this._playOrder=0,this._enableBlending=null,this._blendingSpeed=null,this._numActiveAnimatables=0,this._shouldStart=!0,this._parentContainer=null,this.onAnimationEndObservable=new P,this.onAnimationLoopObservable=new P,this.onAnimationGroupLoopObservable=new P,this.onAnimationGroupEndObservable=new P,this.onAnimationGroupPauseObservable=new P,this.onAnimationGroupPlayObservable=new P,this.metadata=null,this._mask=null,this._animationLoopFlags=[],this._scene=t||G.LastCreatedScene,this._weight=i,this._playOrder=n,this.uniqueId=this._scene.getUniqueId(),et(),this._scene.addAnimationGroup(this)}addTargetedAnimation(e,t){const i=new it(this);i.animation=e,i.target=t;const n=e.getKeys();return this._from>n[0].frame&&(this._from=n[0].frame),this._to<n[n.length-1].frame&&(this._to=n[n.length-1].frame),this._enableBlending!==null&&(e.enableBlending=this._enableBlending),this._blendingSpeed!==null&&(e.blendingSpeed=this._blendingSpeed),this._targetedAnimations.push(i),this._shouldStart=!0,i}removeTargetedAnimation(e){for(let t=this._targetedAnimations.length-1;t>-1;t--)this._targetedAnimations[t].animation===e&&this._targetedAnimations.splice(t,1)}normalize(e=null,t=null){e==null&&(e=this._from),t==null&&(t=this._to);for(let i=0;i<this._targetedAnimations.length;i++){const s=this._targetedAnimations[i].animation.getKeys(),a=s[0],l=s[s.length-1];if(a.frame>e){const r={frame:e,value:a.value,inTangent:a.inTangent,outTangent:a.outTangent,interpolation:a.interpolation};s.splice(0,0,r)}if(l.frame<t){const r={frame:t,value:l.value,inTangent:l.inTangent,outTangent:l.outTangent,interpolation:l.interpolation};s.push(r)}}return this._from=e,this._to=t,this}_processLoop(e,t,i){e.onAnimationLoop=()=>{this.onAnimationLoopObservable.notifyObservers(t),!this._animationLoopFlags[i]&&(this._animationLoopFlags[i]=!0,this._animationLoopCount++,this._animationLoopCount===this._numActiveAnimatables&&(this.onAnimationGroupLoopObservable.notifyObservers(this),this._animationLoopCount=0,this._animationLoopFlags.length=0))}}start(e=!1,t=1,i,n,s){if(this._isStarted||this._targetedAnimations.length===0)return this;this._loopAnimation=e,this._shouldStart=!1,this._animationLoopCount=0,this._animationLoopFlags.length=0;for(let a=0;a<this._targetedAnimations.length;a++){const l=this._targetedAnimations[a],r=this._scene.beginDirectAnimation(l.target,[l.animation],i!==void 0?i:this._from,n!==void 0?n:this._to,e,t,void 0,void 0,s!==void 0?s:this._isAdditive);r.weight=this._weight,r.playOrder=this._playOrder,r.onAnimationEnd=()=>{this.onAnimationEndObservable.notifyObservers(l),this._checkAnimationGroupEnded(r)},this._processLoop(r,l,a),this._animatables.push(r)}return this.syncWithMask(),this._scene.sortActiveAnimatables(),this._speedRatio=t,this._isStarted=!0,this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}pause(){if(!this._isStarted)return this;this._isPaused=!0;for(let e=0;e<this._animatables.length;e++)this._animatables[e].pause();return this.onAnimationGroupPauseObservable.notifyObservers(this),this}play(e){return this.isStarted&&this._animatables.length&&!this._shouldStart?(e!==void 0&&(this.loopAnimation=e),this.restart()):(this.stop(),this.start(e,this._speedRatio)),this}reset(){if(!this._isStarted)return this.play(),this.goToFrame(0),this.stop(!0),this;for(let e=0;e<this._animatables.length;e++)this._animatables[e].reset();return this}restart(){if(!this._isStarted)return this;for(let e=0;e<this._animatables.length;e++)this._animatables[e].restart();return this.syncWithMask(),this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}stop(e=!1){if(!this._isStarted)return this;const t=this._animatables.slice();for(let n=0;n<t.length;n++)t[n].stop(void 0,void 0,!0,e);let i=0;for(let n=0;n<this._scene._activeAnimatables.length;n++){const s=this._scene._activeAnimatables[n];s._runtimeAnimations.length>0?this._scene._activeAnimatables[i++]=s:e&&this._checkAnimationGroupEnded(s,e)}return this._scene._activeAnimatables.length=i,this._isStarted=!1,this}setWeightForAllAnimatables(e){for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.weight=e}return this}syncAllAnimationsWith(e){for(let t=0;t<this._animatables.length;t++)this._animatables[t].syncWith(e);return this}goToFrame(e,t=!1){if(!this._isStarted)return this;for(let i=0;i<this._animatables.length;i++)this._animatables[i].goToFrame(e,t);return this}getCurrentFrame(){return this.animatables[0]?.masterFrame||0}dispose(){if(this.isStarted&&this.stop(),this._targetedAnimations.length=0,this._animatables.length=0,this._scene.removeAnimationGroup(this),this._parentContainer){const e=this._parentContainer.animationGroups.indexOf(this);e>-1&&this._parentContainer.animationGroups.splice(e,1),this._parentContainer=null}this.onAnimationEndObservable.clear(),this.onAnimationGroupEndObservable.clear(),this.onAnimationGroupPauseObservable.clear(),this.onAnimationGroupPlayObservable.clear(),this.onAnimationLoopObservable.clear(),this.onAnimationGroupLoopObservable.clear()}_checkAnimationGroupEnded(e,t=!1){const i=this._animatables.indexOf(e);i>-1&&this._animatables.splice(i,1),this._animatables.length===this._targetedAnimations.length-this._numActiveAnimatables&&(this._isStarted=!1,t||this.onAnimationGroupEndObservable.notifyObservers(this),this._animatables.length=0)}clone(e,t,i=!1,n=!1){const s=new v(e||this.name,this._scene,this._weight,this._playOrder);s._from=this.from,s._to=this.to,s._speedRatio=this.speedRatio,s._loopAnimation=this.loopAnimation,s._isAdditive=this.isAdditive,s._enableBlending=this.enableBlending,s._blendingSpeed=this.blendingSpeed,s.metadata=this.metadata,s.mask=this.mask;for(const a of this._targetedAnimations)s.addTargetedAnimation(i?a.animation.clone(n):a.animation,t?t(a.target):a.target);return s}serialize(){const e={};e.name=this.name,e.from=this.from,e.to=this.to,e.speedRatio=this.speedRatio,e.loopAnimation=this.loopAnimation,e.isAdditive=this.isAdditive,e.weight=this.weight,e.playOrder=this.playOrder,e.enableBlending=this.enableBlending,e.blendingSpeed=this.blendingSpeed,e.targetedAnimations=[];for(let t=0;t<this.targetedAnimations.length;t++){const i=this.targetedAnimations[t];e.targetedAnimations[t]=i.serialize()}return w&&w.HasTags(this)&&(e.tags=w.GetTags(this)),this.metadata&&(e.metadata=this.metadata),e}getClassName(){return"AnimationGroup"}toString(e){let t="Name: "+this.name;return t+=", type: "+this.getClassName(),e&&(t+=", from: "+this._from,t+=", to: "+this._to,t+=", isStarted: "+this._isStarted,t+=", speedRatio: "+this._speedRatio,t+=", targetedAnimations length: "+this._targetedAnimations.length,t+=", animatables length: "+this._animatables.length),t}}function nt(o,e=!0,t=!1,i){if(o.length===0)return null;i=i??o[0].weight;let n=Number.MAX_VALUE,s=-Number.MAX_VALUE;if(t)for(const l of o)l.from<n&&(n=l.from),l.to>s&&(s=l.to);const a=new v(o[0].name+"_merged",o[0].getScene(),i);for(const l of o){t&&l.normalize(n,s);for(const r of l.targetedAnimations)a.addTargetedAnimation(r.animation,r.target);e&&l.dispose()}return a}function at(o,e,t){const i=new v(o.name,e,o.weight,o.playOrder),n=i;for(let s=0;s<o.targetedAnimations.length;s++){const a=o.targetedAnimations[s],l=J(a.animation),r=t?t(a):a.animation.property==="influence"?e.getMorphTargetById(a.targetId):e.getNodeById(a.targetId);r&&i.addTargetedAnimation(l,r)}return w&&w.AddTagsTo(i,o.tags),o.from!==null&&o.to!==null&&i.normalize(o.from,o.to),o.speedRatio!==void 0&&(n._speedRatio=o.speedRatio),o.loopAnimation!==void 0&&(n._loopAnimation=o.loopAnimation),o.isAdditive!==void 0&&(n._isAdditive=o.isAdditive),o.weight!==void 0&&(n._weight=o.weight),o.playOrder!==void 0&&(n._playOrder=o.playOrder),o.enableBlending!==void 0&&(n._enableBlending=o.enableBlending),o.blendingSpeed!==void 0&&(n._blendingSpeed=o.blendingSpeed),o.metadata!==void 0&&(i.metadata=o.metadata),i}function st(o,e,t,i=!1,n){let s;typeof e=="object"?s=e:s={referenceFrame:e,range:t,cloneOriginalAnimationGroup:i,clonedAnimationName:n};let a=o;s.cloneOriginalAnimationGroup&&(a=o.clone(s.clonedAnimationGroupName||a.name));const l=a.targetedAnimations;for(let r=0;r<l.length;r++){const h=l[r];h.animation=X(h.animation,s)}if(a.isAdditive=!0,s.clipKeys){let r=Number.MAX_VALUE,h=-Number.MAX_VALUE;const g=a.targetedAnimations;for(let c=0;c<g.length;c++){const m=g[c].animation.getKeys();r>m[0].frame&&(r=m[0].frame),h<m[m.length-1].frame&&(h=m[m.length-1].frame)}const u=a;u._from=r,u._to=h}return a}function ot(o,e,t,i,n){const s=o.clone(i||o.name);return E(s,e,t,n)}function E(o,e,t,i){return R(o,e,t,i,!1)}function rt(o,e,t,i,n){const s=o.clone(i||o.name);return N(s,e,t,n)}function N(o,e,t,i){return R(o,e,t,i,!0)}function R(o,e,t,i,n=!1){let s=Number.MAX_VALUE,a=-Number.MAX_VALUE;const l=o.targetedAnimations;for(let h=0;h<l.length;h++){const g=l[h],u=i?g.animation:g.animation.clone();n&&(u.createKeyForFrame(e),u.createKeyForFrame(t));const c=u.getKeys(),f=[];let _=Number.MAX_VALUE;for(let m=0;m<c.length;m++){const b=c[m];if(!n&&m>=e&&m<=t||n&&b.frame>=e&&b.frame<=t){const V={frame:b.frame,value:b.value.clone?b.value.clone():b.value,inTangent:b.inTangent,outTangent:b.outTangent,interpolation:b.interpolation,lockedTangent:b.lockedTangent};_===Number.MAX_VALUE&&(_=V.frame),V.frame-=_,f.push(V)}}if(f.length===0){l.splice(h,1),h--;continue}s>f[0].frame&&(s=f[0].frame),a<f[f.length-1].frame&&(a=f[f.length-1].frame),u.setKeys(f,!0),g.animation=u}const r=o;return r._from=s,r._to=a,o}let M=!1;function lt(){M||(M=!0,v.MergeAnimationGroups=nt,v.Parse=at,v.MakeAnimationAdditive=st,v.ClipKeys=ot,v.ClipKeysInPlace=E,v.ClipFrames=rt,v.ClipFramesInPlace=N,v.ClipInPlace=R)}lt();export{v as AnimationGroup,rt as AnimationGroupClipFrames,N as AnimationGroupClipFramesInPlace,R as AnimationGroupClipInPlace,ot as AnimationGroupClipKeys,E as AnimationGroupClipKeysInPlace,st as AnimationGroupMakeAnimationAdditive,nt as AnimationGroupMergeAnimationGroups,at as AnimationGroupParse,lt as RegisterAnimationGroup,it as TargetedAnimation};
|
|
1
|
+
import{b0 as A,W as F,b1 as B,b2 as C,b3 as k,b4 as D,b5 as W,b6 as K,b7 as U,aA as P,a4 as T,X as S,V as Y,b8 as z,b9 as H,aQ as G,ba as w,bb as X,bc as J,bd as q}from"./index-DMstpx40.js";class Q{get currentFrame(){return this._currentFrame}get weight(){return this._weight}get currentValue(){return this._currentValue}get targetPath(){return this._targetPath}get target(){return this._currentActiveTarget}get isAdditive(){return this._host&&this._host.isAdditive}constructor(e,t,i,n){if(this._events=new Array,this._currentFrame=0,this._originalValue=new Array,this._originalBlendValue=null,this._offsetsCache={},this._highLimitsCache={},this._stopped=!1,this._blendingFactor=0,this._currentValue=null,this._currentActiveTarget=null,this._directTarget=null,this._targetPath="",this._weight=1,this._absoluteFrameOffset=0,this._previousElapsedTime=0,this._yoyoDirection=1,this._previousAbsoluteFrame=0,this._targetIsArray=!1,this._coreRuntimeAnimation=null,this._animation=t,this._target=e,this._scene=i,this._host=n,this._activeTargets=[],t._runtimeAnimations.push(this),this._animationState={key:0,repeatCount:0,loopMode:this._getCorrectLoopMode()},this._animation.dataType===A.ANIMATIONTYPE_MATRIX&&(this._animationState.workValue=F.Zero()),this._keys=this._animation.getKeys(),this._minFrame=this._keys[0].frame,this._maxFrame=this._keys[this._keys.length-1].frame,this._minFrame!==0){const a={frame:0,value:this._keys[0].value};this._keys.splice(0,0,a)}if(this._target instanceof Array){let a=0;for(const l of this._target)this._preparePath(l,a),this._getOriginalValues(a),a++;this._targetIsArray=!0}else this._preparePath(this._target),this._getOriginalValues(),this._targetIsArray=!1,this._directTarget=this._activeTargets[0];const s=t.getEvents();if(s&&s.length>0)for(const a of s)this._events.push(a._clone());this._enableBlending=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.enableBlending:this._animation.enableBlending}_preparePath(e,t=0){const i=this._animation.targetPropertyPath;if(i.length>1){let n=e;for(let s=0;s<i.length-1;s++){const a=i[s];if(n=n[a],n===void 0)throw new Error(`Invalid property (${a}) in property path (${i.join(".")})`)}this._targetPath=i[i.length-1],this._activeTargets[t]=n}else this._targetPath=i[0],this._activeTargets[t]=e;if(this._activeTargets[t][this._targetPath]===void 0)throw new Error(`Invalid property (${this._targetPath}) in property path (${i.join(".")})`)}get animation(){return this._animation}reset(e=!1){if(e)if(this._target instanceof Array){let t=0;for(const i of this._target)this._originalValue[t]!==void 0&&this._setValue(i,this._activeTargets[t],this._originalValue[t],-1,t),t++}else this._originalValue[0]!==void 0&&this._setValue(this._target,this._directTarget,this._originalValue[0],-1,0);this._offsetsCache={},this._highLimitsCache={},this._currentFrame=0,this._blendingFactor=0;for(let t=0;t<this._events.length;t++)this._events[t].isDone=!1}isStopped(){return this._stopped}dispose(){const e=this._animation.runtimeAnimations.indexOf(this);e>-1&&this._animation.runtimeAnimations.splice(e,1)}setValue(e,t){if(this._targetIsArray){for(let i=0;i<this._target.length;i++){const n=this._target[i];this._setValue(n,this._activeTargets[i],e,t,i)}return}this._setValue(this._target,this._directTarget,e,t,0)}_getOriginalValues(e=0){let t;const i=this._activeTargets[e];if(A.InheritOriginalValueFromActiveAnimations){const n=this._scene._activeAnimatables;for(let s=0;s<n.length;s++){const a=n[s]._runtimeAnimations;for(let l=0;l<a.length;l++){const r=a[l];if(r!==this&&r._targetPath===this._targetPath){for(let h=0;h<r._activeTargets.length;h++)if(r._activeTargets[h]===i&&r._originalValue[h]!==void 0){r._originalValue[h]&&r._originalValue[h].clone?this._originalValue[e]=r._originalValue[h].clone():this._originalValue[e]=r._originalValue[h];return}}}}}i.getLocalMatrix&&this._targetPath==="_matrix"?t=i.getLocalMatrix():t=i[this._targetPath],t&&t.clone?this._originalValue[e]=t.clone():this._originalValue[e]=t}_registerTargetForLateAnimationBinding(e,t){const i=e.target;this._scene._registeredForLateAnimationBindings.pushNoDuplicate(i),i._lateAnimationHolders||(i._lateAnimationHolders={}),i._lateAnimationHolders[e.targetPath]||(i._lateAnimationHolders[e.targetPath]={totalWeight:0,totalAdditiveWeight:0,animations:[],additiveAnimations:[],originalValue:t}),e.isAdditive?(i._lateAnimationHolders[e.targetPath].additiveAnimations.push(e),i._lateAnimationHolders[e.targetPath].totalAdditiveWeight+=e.weight):(i._lateAnimationHolders[e.targetPath].animations.push(e),i._lateAnimationHolders[e.targetPath].totalWeight+=e.weight)}_setValue(e,t,i,n,s){if(this._currentActiveTarget=t,this._weight=n,this._enableBlending&&this._blendingFactor<=1){if(!this._originalBlendValue){const l=t[this._targetPath];l.clone?this._originalBlendValue=l.clone():this._originalBlendValue=l}this._originalBlendValue.m?A.AllowMatrixDecomposeForInterpolation?this._currentValue?F.DecomposeLerpToRef(this._originalBlendValue,i,this._blendingFactor,this._currentValue):this._currentValue=F.DecomposeLerp(this._originalBlendValue,i,this._blendingFactor):this._currentValue?F.LerpToRef(this._originalBlendValue,i,this._blendingFactor,this._currentValue):this._currentValue=F.Lerp(this._originalBlendValue,i,this._blendingFactor):this._currentValue=A._UniversalLerp(this._originalBlendValue,i,this._blendingFactor);const a=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.blendingSpeed:this._animation.blendingSpeed;this._blendingFactor+=a}else this._currentValue?this._currentValue.copyFrom?this._currentValue.copyFrom(i):this._currentValue=i:i?.clone?this._currentValue=i.clone():this._currentValue=i;n!==-1?this._registerTargetForLateAnimationBinding(this,this._originalValue[s]):this._animationState.loopMode===A.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT?this._currentValue.addToRef?this._currentValue.addToRef(this._originalValue[s],t[this._targetPath]):t[this._targetPath]=this._originalValue[s]+this._currentValue:t[this._targetPath]=this._currentValue,e.markAsDirty&&e.markAsDirty(this._animation.targetProperty)}_getCorrectLoopMode(){return this._target&&this._target.animationPropertiesOverride?this._target.getClassName?.()==="MorphTarget"&&this._target._animationPropertiesOverride==null?this._animation.loopMode:this._target.animationPropertiesOverride.loopMode:this._animation.loopMode}goToFrame(e,t=-1){const i=this._animation.getKeys();e<i[0].frame?e=i[0].frame:e>i[i.length-1].frame&&(e=i[i.length-1].frame);const n=this._events;if(n.length)for(let a=0;a<n.length;a++)n[a].onlyOnce||(n[a].isDone=n[a].frame<e);this._currentFrame=e;const s=this._animation._interpolate(e,this._animationState);this.setValue(s,t)}_prepareForSpeedRatioChange(e){const t=this._previousElapsedTime*(this._animation.framePerSecond*e)/1e3;this._absoluteFrameOffset=this._previousAbsoluteFrame-t}animate(e,t,i,n,s,a=-1){const l=this._animation,r=l.targetPropertyPath;if(!r||r.length<1)return this._stopped=!0,!1;let h=!0,g;const u=this._events;let c;if(this._coreRuntimeAnimation)c=i-t,g=this._coreRuntimeAnimation.currentFrame,this._currentFrame=g,this._animationState.repeatCount=this._coreRuntimeAnimation._animationState.repeatCount,this._animationState.highLimitValue=this._coreRuntimeAnimation._animationState.highLimitValue,this._animationState.offsetValue=this._coreRuntimeAnimation._animationState.offsetValue;else{(t<this._minFrame||t>this._maxFrame)&&(t=this._minFrame),(i<this._minFrame||i>this._maxFrame)&&(i=this._maxFrame),c=i-t;let _,m=e*(l.framePerSecond*s)/1e3+this._absoluteFrameOffset,b=0,V=!1;const O=n&&this._animationState.loopMode===A.ANIMATIONLOOPMODE_YOYO;if(O){const d=(m-t)/c,p=Math.sin(d*Math.PI);m=Math.abs(p)*c+t;const L=p>=0?1:-1;this._yoyoDirection!==L&&(V=!0),this._yoyoDirection=L}if(this._previousElapsedTime=e,this._previousAbsoluteFrame=m,!n&&i>=t&&(m>=c&&s>0||m<=0&&s<0))h=!1,b=l.evaluate(i);else if(!n&&t>=i&&(m<=c&&s<0||m>=0&&s>0))h=!1,b=l.evaluate(t);else if(this._animationState.loopMode!==A.ANIMATIONLOOPMODE_CYCLE){const d=i.toString()+t.toString();if(!this._offsetsCache[d]){this._animationState.repeatCount=0,this._animationState.loopMode=A.ANIMATIONLOOPMODE_CYCLE;const p=l._interpolate(t,this._animationState),y=l._interpolate(i,this._animationState);switch(this._animationState.loopMode=this._getCorrectLoopMode(),l.dataType){case A.ANIMATIONTYPE_FLOAT:this._offsetsCache[d]=y-p;break;case A.ANIMATIONTYPE_QUATERNION:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_VECTOR3:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_VECTOR2:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_SIZE:this._offsetsCache[d]=y.subtract(p);break;case A.ANIMATIONTYPE_COLOR3:this._offsetsCache[d]=y.subtract(p);break}this._highLimitsCache[d]=y}b=this._highLimitsCache[d],_=this._offsetsCache[d]}if(_===void 0)switch(l.dataType){case A.ANIMATIONTYPE_FLOAT:_=0;break;case A.ANIMATIONTYPE_QUATERNION:_=K;break;case A.ANIMATIONTYPE_VECTOR3:_=W;break;case A.ANIMATIONTYPE_VECTOR2:_=D;break;case A.ANIMATIONTYPE_SIZE:_=k;break;case A.ANIMATIONTYPE_COLOR3:_=C;break;case A.ANIMATIONTYPE_COLOR4:_=B;break}if(this._host&&this._host.syncRoot){const d=this._host.syncRoot,p=(d.masterFrame-d.fromFrame)/(d.toFrame-d.fromFrame);g=t+c*p}else m>0&&t>i||m<0&&t<i?g=h&&c!==0?i+m%c:t:g=h&&c!==0?t+m%c:i;if(!O&&(s>0&&this.currentFrame>g||s<0&&this.currentFrame<g)||O&&V){this._onLoop();for(let d=0;d<u.length;d++)u[d].onlyOnce||(u[d].isDone=!1);this._animationState.key=s>0?0:l.getKeys().length-1}this._currentFrame=g,this._animationState.repeatCount=c===0?0:m/c>>0,this._animationState.highLimitValue=b,this._animationState.offsetValue=_}const f=l._interpolate(g,this._animationState);if(this.setValue(f,a),u.length){for(let _=0;_<u.length;_++)if(c>=0&&g>=u[_].frame&&u[_].frame>=t||c<0&&g<=u[_].frame&&u[_].frame<=t){const m=u[_];m.isDone||(m.onlyOnce&&(u.splice(_,1),_--),m.isDone=!0,m.action(g))}}return h||(this._stopped=!0),h}}class I{get syncRoot(){return this._syncRoot}get masterFrame(){return this._runtimeAnimations.length===0?0:this._runtimeAnimations[0].currentFrame}get weight(){return this._weight}set weight(e){if(e===-1){this._weight=-1;return}this._weight=Math.min(Math.max(e,0),1)}get speedRatio(){return this._speedRatio}set speedRatio(e){for(let t=0;t<this._runtimeAnimations.length;t++)this._runtimeAnimations[t]._prepareForSpeedRatioChange(e);this._speedRatio=e,this._goToFrame!==null&&this.goToFrame(this._goToFrame)}get elapsedTime(){return this._localDelayOffset===null?0:this._scene._animationTime-this._localDelayOffset}constructor(e,t,i=0,n=100,s=!1,a=1,l,r,h,g=!1,u=0){this.target=t,this.fromFrame=i,this.toFrame=n,this.loopAnimation=s,this.onAnimationEnd=l,this.onAnimationLoop=h,this.isAdditive=g,this.playOrder=u,this._localDelayOffset=null,this._pausedDelay=null,this._manualJumpDelay=null,this._runtimeAnimations=new Array,this._paused=!1,this._speedRatio=1,this._weight=-1,this._previousWeight=-1,this._syncRoot=null,this._frameToSyncFromJump=null,this._goToFrame=null,this.disposeOnEnd=!0,this.animationStarted=!1,this.onAnimationEndObservable=new P,this.onAnimationLoopObservable=new P,this._scene=e,r&&this.appendAnimations(t,r),this._speedRatio=a,e._activeAnimatables.push(this)}syncWith(e){if(this._syncRoot=e,e){const t=this._scene._activeAnimatables.indexOf(this);t>-1&&(this._scene._activeAnimatables.splice(t,1),this._scene._activeAnimatables.push(this))}return this}getAnimations(){return this._runtimeAnimations}appendAnimations(e,t){for(let i=0;i<t.length;i++){const n=t[i],s=new Q(e,n,this._scene,this);s._onLoop=()=>{this.onAnimationLoopObservable.notifyObservers(this),this.onAnimationLoop&&this.onAnimationLoop()},this._runtimeAnimations.push(s)}}getAnimationByTargetProperty(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)if(t[i].animation.targetProperty===e)return t[i].animation;return null}getRuntimeAnimationByTargetProperty(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)if(t[i].animation.targetProperty===e)return t[i];return null}reset(){const e=this._runtimeAnimations;for(let t=0;t<e.length;t++)e[t].reset(!0);this._localDelayOffset=null,this._pausedDelay=null}enableBlending(e){const t=this._runtimeAnimations;for(let i=0;i<t.length;i++)t[i].animation.enableBlending=!0,t[i].animation.blendingSpeed=e}disableBlending(){const e=this._runtimeAnimations;for(let t=0;t<e.length;t++)e[t].animation.enableBlending=!1}goToFrame(e,t=!1){const i=this._runtimeAnimations;if(i[0]){const n=i[0].animation.framePerSecond;this._frameToSyncFromJump=this._frameToSyncFromJump??i[0].currentFrame;const s=this.speedRatio===0?0:(e-this._frameToSyncFromJump)/n*1e3/this.speedRatio;this._manualJumpDelay=-s}for(let n=0;n<i.length;n++)i[n].goToFrame(e,t?this._weight:-1);this._goToFrame=e}get paused(){return this._paused}pause(){this._paused||(this._paused=!0)}restart(){this._paused=!1}_raiseOnAnimationEnd(){this.onAnimationEnd&&this.onAnimationEnd(),this.onAnimationEndObservable.notifyObservers(this)}stop(e,t,i=!1,n=!1){if(e||t){const s=this._scene._activeAnimatables.indexOf(this);if(s>-1){const a=this._runtimeAnimations;for(let l=a.length-1;l>=0;l--){const r=a[l];e&&r.animation.name!=e||t&&!t(r.target)||(r.dispose(),a.splice(l,1))}a.length==0&&(i||this._scene._activeAnimatables.splice(s,1),n||this._raiseOnAnimationEnd())}}else{const s=this._scene._activeAnimatables.indexOf(this);if(s>-1){i||this._scene._activeAnimatables.splice(s,1);const a=this._runtimeAnimations;for(let l=0;l<a.length;l++)a[l].dispose();this._runtimeAnimations.length=0,n||this._raiseOnAnimationEnd()}}}async waitAsync(){return await new Promise(e=>{this.onAnimationEndObservable.add(()=>{e(this)},void 0,void 0,this,!0)})}_animate(e){if(this._paused)return this.animationStarted=!1,this._pausedDelay===null&&(this._pausedDelay=e),!0;if(this._localDelayOffset===null?(this._localDelayOffset=e,this._pausedDelay=null):this._pausedDelay!==null&&(this._localDelayOffset+=e-this._pausedDelay,this._pausedDelay=null),this._manualJumpDelay!==null&&(this._localDelayOffset+=this.speedRatio<0?-this._manualJumpDelay:this._manualJumpDelay,this._manualJumpDelay=null,this._frameToSyncFromJump=null),this._goToFrame=null,!I.ProcessPausedAnimatables&&this._weight===0&&this._previousWeight===0)return!0;this._previousWeight=this._weight;let t=!1;const i=this._runtimeAnimations;let n;for(n=0;n<i.length;n++){const a=i[n].animate(e-this._localDelayOffset,this.fromFrame,this.toFrame,this.loopAnimation,this._speedRatio,this._weight);t=t||a}if(this.animationStarted=t,!t){if(this.disposeOnEnd)for(n=this._scene._activeAnimatables.indexOf(this),this._scene._activeAnimatables.splice(n,1),n=0;n<i.length;n++)i[n].dispose();this._raiseOnAnimationEnd(),this.disposeOnEnd&&(this.onAnimationEnd=null,this.onAnimationLoop=null,this.onAnimationLoopObservable.clear(),this.onAnimationEndObservable.clear())}return t}}I.ProcessPausedAnimatables=!1;function j(o){if(o.totalWeight===0&&o.totalAdditiveWeight===0)return o.originalValue;let e=1;const t=T.Vector3[0],i=T.Vector3[1],n=T.Quaternion[0];let s=0;const a=o.animations[0],l=o.originalValue;let r,h=!1;if(o.totalWeight<1)r=1-o.totalWeight,l.decompose(i,n,t);else{if(s=1,e=o.totalWeight,r=a.weight/e,r==1)if(o.totalAdditiveWeight)h=!0;else return a.currentValue;a.currentValue.decompose(i,n,t)}if(!h){i.scaleInPlace(r),t.scaleInPlace(r),n.scaleInPlace(r);for(let u=s;u<o.animations.length;u++){const c=o.animations[u];if(c.weight===0)continue;r=c.weight/e;const f=T.Vector3[2],_=T.Vector3[3],m=T.Quaternion[1];c.currentValue.decompose(_,m,f),_.scaleAndAddToRef(r,i),m.scaleAndAddToRef(S.Dot(n,m)>0?r:-r,n),f.scaleAndAddToRef(r,t)}n.normalize()}for(let u=0;u<o.additiveAnimations.length;u++){const c=o.additiveAnimations[u];if(c.weight===0)continue;const f=T.Vector3[2],_=T.Vector3[3],m=T.Quaternion[1];c.currentValue.decompose(_,m,f),_.multiplyToRef(i,_),Y.LerpToRef(i,_,c.weight,i),n.multiplyToRef(m,m),S.SlerpToRef(n,m,c.weight,n),f.scaleAndAddToRef(c.weight,t)}const g=a?a._animationState.workValue:T.Matrix[0].clone();return F.ComposeToRef(i,n,t,g),g}function $(o,e){if(o.totalWeight===0&&o.totalAdditiveWeight===0)return e;const t=o.animations[0],i=o.originalValue;let n=e;if(o.totalWeight===0&&o.totalAdditiveWeight>0)n.copyFrom(i);else if(o.animations.length===1){if(S.SlerpToRef(i,t.currentValue,Math.min(1,o.totalWeight),n),o.totalAdditiveWeight===0)return n}else if(o.animations.length>1){let s=1,a,l;if(o.totalWeight<1){const h=1-o.totalWeight;a=[],l=[],a.push(i),l.push(h)}else{if(o.animations.length===2&&(S.SlerpToRef(o.animations[0].currentValue,o.animations[1].currentValue,o.animations[1].weight/o.totalWeight,e),o.totalAdditiveWeight===0))return e;a=[],l=[],s=o.totalWeight}for(let h=0;h<o.animations.length;h++){const g=o.animations[h];a.push(g.currentValue),l.push(g.weight/s)}let r=0;for(let h=0;h<a.length;){if(!h){S.SlerpToRef(a[h],a[h+1],l[h+1]/(l[h]+l[h+1]),e),n=e,r=l[h]+l[h+1],h+=2;continue}r+=l[h],S.SlerpToRef(n,a[h],l[h]/r,n),h++}}for(let s=0;s<o.additiveAnimations.length;s++){const a=o.additiveAnimations[s];a.weight!==0&&(n.multiplyToRef(a.currentValue,T.Quaternion[0]),S.SlerpToRef(n,T.Quaternion[0],a.weight,n))}return n}function Z(o){if(o._registeredForLateAnimationBindings.length){for(let e=0;e<o._registeredForLateAnimationBindings.length;e++){const t=o._registeredForLateAnimationBindings.data[e];for(const i in t._lateAnimationHolders){const n=t._lateAnimationHolders[i],s=n.animations[0],a=n.originalValue;if(a==null)continue;const l=A.AllowMatrixDecomposeForInterpolation&&a.m;let r=t[i];if(l)r=j(n);else if(a.w!==void 0)r=$(n,r||S.Identity());else{let g=0,u=1;const c=s&&s._animationState.loopMode===A.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT;if(n.totalWeight<1)c?r=a.clone?a.clone():a:s&&a.scale?r=a.scale(1-n.totalWeight):s?r=a*(1-n.totalWeight):a.clone?r=a.clone():r=a;else if(s){u=n.totalWeight;const f=s.weight/u;f!==1?s.currentValue.scale?r=s.currentValue.scale(f):r=s.currentValue*f:r=s.currentValue,c&&(r.addToRef?r.addToRef(a,r):r+=a),g=1}for(let f=g;f<n.animations.length;f++){const _=n.animations[f],m=_.weight/u;if(m)_.currentValue.scaleAndAddToRef?_.currentValue.scaleAndAddToRef(m,r):r+=_.currentValue*m;else continue}for(let f=0;f<n.additiveAnimations.length;f++){const _=n.additiveAnimations[f],m=_.weight;if(m)_.currentValue.scaleAndAddToRef?_.currentValue.scaleAndAddToRef(m,r):r+=_.currentValue*m;else continue}}t[i]=r}t._lateAnimationHolders={}}o._registeredForLateAnimationBindings.reset()}}function tt(o,e){e&&(e.prototype.copyAnimationRange=function(t,i,n,s=!1,a=null){this.animations.length===0&&(this.animations.push(new A(this.name,"_matrix",t.animations[0].framePerSecond,A.ANIMATIONTYPE_MATRIX,0)),this.animations[0].setKeys([]));const l=t.animations[0].getRange(i);if(!l)return!1;const r=l.from,h=l.to,g=t.animations[0].getKeys(),u=t.length,c=t.getParent(),f=this.getParent(),_=s&&c&&u&&this.length&&u!==this.length,m=_&&f&&c?f.length/c.length:1,b=s&&!f&&a&&(a.x!==1||a.y!==1||a.z!==1),V=this.animations[0].getKeys();let O,d,p;for(let y=0,L=g.length;y<L;y++)O=g[y],O.frame>=r&&O.frame<=h&&(s?(p=O.value.clone(),_?(d=p.getTranslation(),p.setTranslation(d.scaleInPlace(m))):b&&a?(d=p.getTranslation(),p.setTranslation(d.multiplyInPlace(a))):p=O.value):p=O.value,V.push({frame:O.frame+n,value:p}));return this.animations[0].createRange(i,r+n,h+n),!0}),o&&(o.prototype._animate=function(t){if(!this.animationsEnabled)return;const i=U.Now;if(!this._animationTimeLast){if(this._pendingData.length>0)return;this._animationTimeLast=i}this.deltaTime=t!==void 0?t:this.useConstantAnimationDeltaTime?16:(i-this._animationTimeLast)*this.animationTimeScale,this._animationTimeLast=i;const n=this._activeAnimatables;if(n.length===0)return;this._animationTime+=this.deltaTime;const s=this._animationTime;for(let a=0;a<n.length;a++){const l=n[a];!l._animate(s)&&l.disposeOnEnd&&a--}Z(this)},o.prototype.sortActiveAnimatables=function(){this._activeAnimatables.sort((t,i)=>t.playOrder-i.playOrder)},o.prototype.beginWeightedAnimation=function(t,i,n,s=1,a,l=1,r,h,g,u,c=!1){const f=this.beginAnimation(t,i,n,a,l,r,h,!1,g,u,c);return f.weight=s,f},o.prototype.beginAnimation=function(t,i,n,s,a=1,l,r,h=!0,g,u,c=!1){if(a<0){const _=i;i=n,n=_,a=-a}i>n&&(a=-a),h&&this.stopAnimation(t,void 0,g),r||(r=new I(this,t,i,n,s,a,l,void 0,u,c));const f=g?g(t):!0;if(t.animations&&f&&r.appendAnimations(t,t.animations),t.getAnimatables){const _=t.getAnimatables();for(let m=0;m<_.length;m++)this.beginAnimation(_[m],i,n,s,a,l,r,h,g,u)}return r.reset(),r},o.prototype.beginHierarchyAnimation=function(t,i,n,s,a,l=1,r,h,g=!0,u,c,f=!1){const _=t.getDescendants(i),m=[];m.push(this.beginAnimation(t,n,s,a,l,r,h,g,u,void 0,f));for(const b of _)m.push(this.beginAnimation(b,n,s,a,l,r,h,g,u,void 0,f));return m},o.prototype.beginDirectAnimation=function(t,i,n,s,a,l=1,r,h,g=!1){if(l<0){const c=n;n=s,s=c,l=-l}return n>s&&(l=-l),new I(this,t,n,s,a,l,r,i,h,g)},o.prototype.beginDirectHierarchyAnimation=function(t,i,n,s,a,l,r,h,g,u=!1){const c=t.getDescendants(i),f=[];f.push(this.beginDirectAnimation(t,n,s,a,l,r,h,g,u));for(const _ of c)f.push(this.beginDirectAnimation(_,n,s,a,l,r,h,g,u));return f},o.prototype.getAnimatableByTarget=function(t){for(let i=0;i<this._activeAnimatables.length;i++)if(this._activeAnimatables[i].target===t)return this._activeAnimatables[i];return null},o.prototype.getAllAnimatablesByTarget=function(t){const i=[];for(let n=0;n<this._activeAnimatables.length;n++)this._activeAnimatables[n].target===t&&i.push(this._activeAnimatables[n]);return i},o.prototype.stopAnimation=function(t,i,n){const s=this.getAllAnimatablesByTarget(t);for(const a of s)a.stop(i,n)},o.prototype.stopAllAnimations=function(){if(this._activeAnimatables){for(let t=0;t<this._activeAnimatables.length;t++)this._activeAnimatables[t].stop(void 0,void 0,!0);this._activeAnimatables.length=0}for(const t of this.animationGroups)t.stop()})}let x=!1;function et(){x||(x=!0,tt(H,z))}class it{getClassName(){return"TargetedAnimation"}constructor(e){this.parent=e,this.uniqueId=q.UniqueId}serialize(){const e={};return e.animation=this.animation.serialize(),e.targetId=this.target.id,e.targetUniqueId=this.target.uniqueId,e}}class v{get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this.syncWithMask(!0))}syncWithMask(e=!1){if(!this.mask&&!e){this._numActiveAnimatables=this._targetedAnimations.length;return}this._numActiveAnimatables=0;for(let t=0;t<this._animatables.length;++t){const i=this._animatables[t];!this.mask||this.mask.disabled||this.mask.retainsTarget(i.target.name)?(this._numActiveAnimatables++,i.paused&&i.restart()):i.paused||i.pause()}}removeUnmaskedAnimations(){if(!(!this.mask||this.mask.disabled)){for(let e=0;e<this._animatables.length;++e){const t=this._animatables[e];this.mask.retainsTarget(t.target.name)||(t.stop(),this._animatables.splice(e,1),--e)}for(let e=0;e<this._targetedAnimations.length;e++){const t=this._targetedAnimations[e];this.mask.retainsTarget(t.target.name)||(this._targetedAnimations.splice(e,1),--e)}}}get from(){return this._from}set from(e){if(this._from!==e){this._from=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.fromFrame=this._from}}}get to(){return this._to}set to(e){if(this._to!==e){this._to=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.toFrame=this._to}}}get isStarted(){return this._isStarted}get isPlaying(){return this._isStarted&&!this._isPaused}get speedRatio(){return this._speedRatio}set speedRatio(e){if(this._speedRatio!==e){this._speedRatio=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.speedRatio=this._speedRatio}}}get loopAnimation(){return this._loopAnimation}set loopAnimation(e){if(this._loopAnimation!==e){this._loopAnimation=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.loopAnimation=this._loopAnimation}}}get isAdditive(){return this._isAdditive}set isAdditive(e){if(this._isAdditive!==e){this._isAdditive=e;for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.isAdditive=this._isAdditive}}}get weight(){return this._weight}set weight(e){this._weight!==e&&(this._weight=e,this.setWeightForAllAnimatables(this._weight))}get targetedAnimations(){return this._targetedAnimations}get animatables(){return this._animatables}get children(){return this._targetedAnimations}get playOrder(){return this._playOrder}set playOrder(e){if(this._playOrder!==e&&(this._playOrder=e,this._animatables.length>0)){for(let t=0;t<this._animatables.length;t++)this._animatables[t].playOrder=this._playOrder;this._scene.sortActiveAnimatables()}}get enableBlending(){return this._enableBlending}set enableBlending(e){if(this._enableBlending!==e&&(this._enableBlending=e,e!==null))for(let t=0;t<this._targetedAnimations.length;++t)this._targetedAnimations[t].animation.enableBlending=e}get blendingSpeed(){return this._blendingSpeed}set blendingSpeed(e){if(this._blendingSpeed!==e&&(this._blendingSpeed=e,e!==null))for(let t=0;t<this._targetedAnimations.length;++t)this._targetedAnimations[t].animation.blendingSpeed=e}getLength(e,t){e=e??this._from,t=t??this._to;const i=this.targetedAnimations[0].animation.framePerSecond*this._speedRatio;return(t-e)/i}getScene(){return this._scene}constructor(e,t=null,i=-1,n=0){this.name=e,this._targetedAnimations=new Array,this._animatables=new Array,this._from=Number.MAX_VALUE,this._to=-Number.MAX_VALUE,this._speedRatio=1,this._loopAnimation=!1,this._isAdditive=!1,this._weight=-1,this._playOrder=0,this._enableBlending=null,this._blendingSpeed=null,this._numActiveAnimatables=0,this._shouldStart=!0,this._parentContainer=null,this.onAnimationEndObservable=new P,this.onAnimationLoopObservable=new P,this.onAnimationGroupLoopObservable=new P,this.onAnimationGroupEndObservable=new P,this.onAnimationGroupPauseObservable=new P,this.onAnimationGroupPlayObservable=new P,this.metadata=null,this._mask=null,this._animationLoopFlags=[],this._scene=t||G.LastCreatedScene,this._weight=i,this._playOrder=n,this.uniqueId=this._scene.getUniqueId(),et(),this._scene.addAnimationGroup(this)}addTargetedAnimation(e,t){const i=new it(this);i.animation=e,i.target=t;const n=e.getKeys();return this._from>n[0].frame&&(this._from=n[0].frame),this._to<n[n.length-1].frame&&(this._to=n[n.length-1].frame),this._enableBlending!==null&&(e.enableBlending=this._enableBlending),this._blendingSpeed!==null&&(e.blendingSpeed=this._blendingSpeed),this._targetedAnimations.push(i),this._shouldStart=!0,i}removeTargetedAnimation(e){for(let t=this._targetedAnimations.length-1;t>-1;t--)this._targetedAnimations[t].animation===e&&this._targetedAnimations.splice(t,1)}normalize(e=null,t=null){e==null&&(e=this._from),t==null&&(t=this._to);for(let i=0;i<this._targetedAnimations.length;i++){const s=this._targetedAnimations[i].animation.getKeys(),a=s[0],l=s[s.length-1];if(a.frame>e){const r={frame:e,value:a.value,inTangent:a.inTangent,outTangent:a.outTangent,interpolation:a.interpolation};s.splice(0,0,r)}if(l.frame<t){const r={frame:t,value:l.value,inTangent:l.inTangent,outTangent:l.outTangent,interpolation:l.interpolation};s.push(r)}}return this._from=e,this._to=t,this}_processLoop(e,t,i){e.onAnimationLoop=()=>{this.onAnimationLoopObservable.notifyObservers(t),!this._animationLoopFlags[i]&&(this._animationLoopFlags[i]=!0,this._animationLoopCount++,this._animationLoopCount===this._numActiveAnimatables&&(this.onAnimationGroupLoopObservable.notifyObservers(this),this._animationLoopCount=0,this._animationLoopFlags.length=0))}}start(e=!1,t=1,i,n,s){if(this._isStarted||this._targetedAnimations.length===0)return this;this._loopAnimation=e,this._shouldStart=!1,this._animationLoopCount=0,this._animationLoopFlags.length=0;for(let a=0;a<this._targetedAnimations.length;a++){const l=this._targetedAnimations[a],r=this._scene.beginDirectAnimation(l.target,[l.animation],i!==void 0?i:this._from,n!==void 0?n:this._to,e,t,void 0,void 0,s!==void 0?s:this._isAdditive);r.weight=this._weight,r.playOrder=this._playOrder,r.onAnimationEnd=()=>{this.onAnimationEndObservable.notifyObservers(l),this._checkAnimationGroupEnded(r)},this._processLoop(r,l,a),this._animatables.push(r)}return this.syncWithMask(),this._scene.sortActiveAnimatables(),this._speedRatio=t,this._isStarted=!0,this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}pause(){if(!this._isStarted)return this;this._isPaused=!0;for(let e=0;e<this._animatables.length;e++)this._animatables[e].pause();return this.onAnimationGroupPauseObservable.notifyObservers(this),this}play(e){return this.isStarted&&this._animatables.length&&!this._shouldStart?(e!==void 0&&(this.loopAnimation=e),this.restart()):(this.stop(),this.start(e,this._speedRatio)),this}reset(){if(!this._isStarted)return this.play(),this.goToFrame(0),this.stop(!0),this;for(let e=0;e<this._animatables.length;e++)this._animatables[e].reset();return this}restart(){if(!this._isStarted)return this;for(let e=0;e<this._animatables.length;e++)this._animatables[e].restart();return this.syncWithMask(),this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}stop(e=!1){if(!this._isStarted)return this;const t=this._animatables.slice();for(let n=0;n<t.length;n++)t[n].stop(void 0,void 0,!0,e);let i=0;for(let n=0;n<this._scene._activeAnimatables.length;n++){const s=this._scene._activeAnimatables[n];s._runtimeAnimations.length>0?this._scene._activeAnimatables[i++]=s:e&&this._checkAnimationGroupEnded(s,e)}return this._scene._activeAnimatables.length=i,this._isStarted=!1,this}setWeightForAllAnimatables(e){for(let t=0;t<this._animatables.length;t++){const i=this._animatables[t];i.weight=e}return this}syncAllAnimationsWith(e){for(let t=0;t<this._animatables.length;t++)this._animatables[t].syncWith(e);return this}goToFrame(e,t=!1){if(!this._isStarted)return this;for(let i=0;i<this._animatables.length;i++)this._animatables[i].goToFrame(e,t);return this}getCurrentFrame(){return this.animatables[0]?.masterFrame||0}dispose(){if(this.isStarted&&this.stop(),this._targetedAnimations.length=0,this._animatables.length=0,this._scene.removeAnimationGroup(this),this._parentContainer){const e=this._parentContainer.animationGroups.indexOf(this);e>-1&&this._parentContainer.animationGroups.splice(e,1),this._parentContainer=null}this.onAnimationEndObservable.clear(),this.onAnimationGroupEndObservable.clear(),this.onAnimationGroupPauseObservable.clear(),this.onAnimationGroupPlayObservable.clear(),this.onAnimationLoopObservable.clear(),this.onAnimationGroupLoopObservable.clear()}_checkAnimationGroupEnded(e,t=!1){const i=this._animatables.indexOf(e);i>-1&&this._animatables.splice(i,1),this._animatables.length===this._targetedAnimations.length-this._numActiveAnimatables&&(this._isStarted=!1,t||this.onAnimationGroupEndObservable.notifyObservers(this),this._animatables.length=0)}clone(e,t,i=!1,n=!1){const s=new v(e||this.name,this._scene,this._weight,this._playOrder);s._from=this.from,s._to=this.to,s._speedRatio=this.speedRatio,s._loopAnimation=this.loopAnimation,s._isAdditive=this.isAdditive,s._enableBlending=this.enableBlending,s._blendingSpeed=this.blendingSpeed,s.metadata=this.metadata,s.mask=this.mask;for(const a of this._targetedAnimations)s.addTargetedAnimation(i?a.animation.clone(n):a.animation,t?t(a.target):a.target);return s}serialize(){const e={};e.name=this.name,e.from=this.from,e.to=this.to,e.speedRatio=this.speedRatio,e.loopAnimation=this.loopAnimation,e.isAdditive=this.isAdditive,e.weight=this.weight,e.playOrder=this.playOrder,e.enableBlending=this.enableBlending,e.blendingSpeed=this.blendingSpeed,e.targetedAnimations=[];for(let t=0;t<this.targetedAnimations.length;t++){const i=this.targetedAnimations[t];e.targetedAnimations[t]=i.serialize()}return w&&w.HasTags(this)&&(e.tags=w.GetTags(this)),this.metadata&&(e.metadata=this.metadata),e}getClassName(){return"AnimationGroup"}toString(e){let t="Name: "+this.name;return t+=", type: "+this.getClassName(),e&&(t+=", from: "+this._from,t+=", to: "+this._to,t+=", isStarted: "+this._isStarted,t+=", speedRatio: "+this._speedRatio,t+=", targetedAnimations length: "+this._targetedAnimations.length,t+=", animatables length: "+this._animatables.length),t}}function nt(o,e=!0,t=!1,i){if(o.length===0)return null;i=i??o[0].weight;let n=Number.MAX_VALUE,s=-Number.MAX_VALUE;if(t)for(const l of o)l.from<n&&(n=l.from),l.to>s&&(s=l.to);const a=new v(o[0].name+"_merged",o[0].getScene(),i);for(const l of o){t&&l.normalize(n,s);for(const r of l.targetedAnimations)a.addTargetedAnimation(r.animation,r.target);e&&l.dispose()}return a}function at(o,e,t){const i=new v(o.name,e,o.weight,o.playOrder),n=i;for(let s=0;s<o.targetedAnimations.length;s++){const a=o.targetedAnimations[s],l=J(a.animation),r=t?t(a):a.animation.property==="influence"?e.getMorphTargetById(a.targetId):e.getNodeById(a.targetId);r&&i.addTargetedAnimation(l,r)}return w&&w.AddTagsTo(i,o.tags),o.from!==null&&o.to!==null&&i.normalize(o.from,o.to),o.speedRatio!==void 0&&(n._speedRatio=o.speedRatio),o.loopAnimation!==void 0&&(n._loopAnimation=o.loopAnimation),o.isAdditive!==void 0&&(n._isAdditive=o.isAdditive),o.weight!==void 0&&(n._weight=o.weight),o.playOrder!==void 0&&(n._playOrder=o.playOrder),o.enableBlending!==void 0&&(n._enableBlending=o.enableBlending),o.blendingSpeed!==void 0&&(n._blendingSpeed=o.blendingSpeed),o.metadata!==void 0&&(i.metadata=o.metadata),i}function st(o,e,t,i=!1,n){let s;typeof e=="object"?s=e:s={referenceFrame:e,range:t,cloneOriginalAnimationGroup:i,clonedAnimationName:n};let a=o;s.cloneOriginalAnimationGroup&&(a=o.clone(s.clonedAnimationGroupName||a.name));const l=a.targetedAnimations;for(let r=0;r<l.length;r++){const h=l[r];h.animation=X(h.animation,s)}if(a.isAdditive=!0,s.clipKeys){let r=Number.MAX_VALUE,h=-Number.MAX_VALUE;const g=a.targetedAnimations;for(let c=0;c<g.length;c++){const m=g[c].animation.getKeys();r>m[0].frame&&(r=m[0].frame),h<m[m.length-1].frame&&(h=m[m.length-1].frame)}const u=a;u._from=r,u._to=h}return a}function ot(o,e,t,i,n){const s=o.clone(i||o.name);return E(s,e,t,n)}function E(o,e,t,i){return R(o,e,t,i,!1)}function rt(o,e,t,i,n){const s=o.clone(i||o.name);return N(s,e,t,n)}function N(o,e,t,i){return R(o,e,t,i,!0)}function R(o,e,t,i,n=!1){let s=Number.MAX_VALUE,a=-Number.MAX_VALUE;const l=o.targetedAnimations;for(let h=0;h<l.length;h++){const g=l[h],u=i?g.animation:g.animation.clone();n&&(u.createKeyForFrame(e),u.createKeyForFrame(t));const c=u.getKeys(),f=[];let _=Number.MAX_VALUE;for(let m=0;m<c.length;m++){const b=c[m];if(!n&&m>=e&&m<=t||n&&b.frame>=e&&b.frame<=t){const V={frame:b.frame,value:b.value.clone?b.value.clone():b.value,inTangent:b.inTangent,outTangent:b.outTangent,interpolation:b.interpolation,lockedTangent:b.lockedTangent};_===Number.MAX_VALUE&&(_=V.frame),V.frame-=_,f.push(V)}}if(f.length===0){l.splice(h,1),h--;continue}s>f[0].frame&&(s=f[0].frame),a<f[f.length-1].frame&&(a=f[f.length-1].frame),u.setKeys(f,!0),g.animation=u}const r=o;return r._from=s,r._to=a,o}let M=!1;function lt(){M||(M=!0,v.MergeAnimationGroups=nt,v.Parse=at,v.MakeAnimationAdditive=st,v.ClipKeys=ot,v.ClipKeysInPlace=E,v.ClipFrames=rt,v.ClipFramesInPlace=N,v.ClipInPlace=R)}lt();export{v as AnimationGroup,rt as AnimationGroupClipFrames,N as AnimationGroupClipFramesInPlace,R as AnimationGroupClipInPlace,ot as AnimationGroupClipKeys,E as AnimationGroupClipKeysInPlace,st as AnimationGroupMakeAnimationAdditive,nt as AnimationGroupMergeAnimationGroups,at as AnimationGroupParse,lt as RegisterAnimationGroup,it as TargetedAnimation};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{S as e}from"./index-
|
|
1
|
+
import{S as e}from"./index-DMstpx40.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
|
python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/basisTextureLoader-B4pSwZUY.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ay as F,az as U,L as D,x as P}from"./index-DMstpx40.js";function R(){const e={cTFETC1:0,cTFETC2:1,cTFBC1:2,cTFBC3:3,cTFBC7:6,cTFPVRTC1_4_RGB:8,cTFPVRTC1_4_RGBA:9,cTFASTC_4x4:10,cTFRGB565:14};let n=null;onmessage=s=>{if(s.data.action==="init"){if(s.data.url)try{importScripts(s.data.url)}catch(o){postMessage({action:"error",error:o})}n||(n=BASIS({wasmBinary:s.data.wasmBinary})),n!==null&&n.then(o=>{BASIS=o,o.initializeBasis(),postMessage({action:"init"})})}else if(s.data.action==="transcode"){const o=s.data.config,a=s.data.imageData,d=new BASIS.BasisFile(a),r=l(d);let f=s.data.ignoreSupportedFormats?null:t(s.data.config,r),p=!1;f===null&&(p=!0,f=r.hasAlpha?e.cTFBC3:e.cTFBC1);let g=!0;d.startTranscoding()||(g=!1);const T=[];for(let m=0;m<r.images.length&&g;m++){const u=r.images[m];if(o.loadSingleImage===void 0||o.loadSingleImage===m){let b=u.levels.length;o.loadMipmapLevels===!1&&(b=1);for(let C=0;C<b;C++){const w=u.levels[C],B=i(d,m,C,f,p);if(!B){g=!1;break}w.transcodedPixels=B,T.push(w.transcodedPixels.buffer)}}}d.close(),d.delete(),p&&(f=-1),g?postMessage({action:"transcode",success:g,id:s.data.id,fileInfo:r,format:f},T):postMessage({action:"transcode",success:g,id:s.data.id})}};function t(s,o){let a=null;return s.supportedCompressionFormats&&(s.supportedCompressionFormats.astc?a=e.cTFASTC_4x4:s.supportedCompressionFormats.bc7?a=e.cTFBC7:s.supportedCompressionFormats.s3tc?a=o.hasAlpha?e.cTFBC3:e.cTFBC1:s.supportedCompressionFormats.pvrtc?a=o.hasAlpha?e.cTFPVRTC1_4_RGBA:e.cTFPVRTC1_4_RGB:s.supportedCompressionFormats.etc2?a=e.cTFETC2:s.supportedCompressionFormats.etc1?a=e.cTFETC1:a=e.cTFRGB565),a}function l(s){const o=s.getHasAlpha(),a=s.getNumImages(),d=[];for(let f=0;f<a;f++){const p={levels:[]},g=s.getNumLevels(f);for(let T=0;T<g;T++){const m={width:s.getImageWidth(f,T),height:s.getImageHeight(f,T)};p.levels.push(m)}d.push(p)}return{hasAlpha:o,images:d}}function i(s,o,a,d,r){const f=s.getImageTranscodedSizeInBytes(o,a,d);let p=new Uint8Array(f);if(!s.transcodeImage(p,o,a,d,1,0))return null;if(r){const g=s.getImageWidth(o,a)+3&-4,T=s.getImageHeight(o,a)+3&-4;p=c(p,0,g,T)}return p}function c(s,o,a,d){const r=new Uint16Array(4),f=new Uint16Array(a*d),p=a/4,g=d/4;for(let T=0;T<g;T++)for(let m=0;m<p;m++){const u=o+8*(T*p+m);r[0]=s[u]|s[u+1]<<8,r[1]=s[u+2]|s[u+3]<<8,r[2]=(2*(r[0]&31)+1*(r[1]&31))/3|(2*(r[0]&2016)+1*(r[1]&2016))/3&2016|(2*(r[0]&63488)+1*(r[1]&63488))/3&63488,r[3]=(2*(r[1]&31)+1*(r[0]&31))/3|(2*(r[1]&2016)+1*(r[0]&2016))/3&2016|(2*(r[1]&63488)+1*(r[0]&63488))/3&63488;for(let b=0;b<4;b++){const C=s[u+4+b];let w=(T*4+b)*a+m*4;f[w++]=r[C&3],f[w++]=r[C>>2&3],f[w++]=r[C>>4&3],f[w]=r[C>>6&3]}}return f}}async function W(e,n,t){return await new Promise((l,i)=>{const c=s=>{s.data.action==="init"?(e.removeEventListener("message",c),l(e)):s.data.action==="error"&&i(s.data.error||"error initializing worker")};e.addEventListener("message",c),e.postMessage({action:"init",url:t?F.GetBabylonScriptURL(t):void 0,wasmBinary:n},[n])})}var h;(function(e){e[e.cTFETC1=0]="cTFETC1",e[e.cTFETC2=1]="cTFETC2",e[e.cTFBC1=2]="cTFBC1",e[e.cTFBC3=3]="cTFBC3",e[e.cTFBC4=4]="cTFBC4",e[e.cTFBC5=5]="cTFBC5",e[e.cTFBC7=6]="cTFBC7",e[e.cTFPVRTC1_4_RGB=8]="cTFPVRTC1_4_RGB",e[e.cTFPVRTC1_4_RGBA=9]="cTFPVRTC1_4_RGBA",e[e.cTFASTC_4x4=10]="cTFASTC_4x4",e[e.cTFATC_RGB=11]="cTFATC_RGB",e[e.cTFATC_RGBA_INTERPOLATED_ALPHA=12]="cTFATC_RGBA_INTERPOLATED_ALPHA",e[e.cTFRGBA32=13]="cTFRGBA32",e[e.cTFRGB565=14]="cTFRGB565",e[e.cTFBGR565=15]="cTFBGR565",e[e.cTFRGBA4444=16]="cTFRGBA4444",e[e.cTFFXT1_RGB=17]="cTFFXT1_RGB",e[e.cTFPVRTC2_4_RGB=18]="cTFPVRTC2_4_RGB",e[e.cTFPVRTC2_4_RGBA=19]="cTFPVRTC2_4_RGBA",e[e.cTFETC2_EAC_R11=20]="cTFETC2_EAC_R11",e[e.cTFETC2_EAC_RG11=21]="cTFETC2_EAC_RG11"})(h||(h={}));const L={JSModuleURL:`${F._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.js`,WasmModuleURL:`${F._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.wasm`},V=(e,n)=>{let t;switch(e){case h.cTFETC1:t=36196;break;case h.cTFBC1:t=33776;break;case h.cTFBC4:t=33779;break;case h.cTFASTC_4x4:t=37808;break;case h.cTFETC2:t=37496;break;case h.cTFBC7:t=36492;break}if(t===void 0)throw"The chosen Basis transcoder format is not currently supported";return t};let G=null,y=null,k=0;const x=!1,H=async()=>(G||(G=new Promise((e,n)=>{y?e(y):F.LoadFileAsync(F.GetBabylonScriptURL(L.WasmModuleURL)).then(t=>{if(typeof URL!="function")return n("Basis transcoder requires an environment with a URL constructor");const l=URL.createObjectURL(new Blob([`(${R})()`],{type:"application/javascript"}));y=new Worker(l),W(y,t,L.JSModuleURL).then(e,n)}).catch(n)})),await G),_=async(e,n)=>{const t=e instanceof ArrayBuffer?new Uint8Array(e):e;return await new Promise((l,i)=>{H().then(()=>{const c=k++,s=a=>{a.data.action==="transcode"&&a.data.id===c&&(y.removeEventListener("message",s),a.data.success?l(a.data):i("Transcode is not supported on this device"))};y.addEventListener("message",s);const o=new Uint8Array(t.byteLength);o.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),y.postMessage({action:"transcode",id:c,imageData:o,config:n,ignoreSupportedFormats:x},[o.buffer])},c=>{i(c)})})},E=(e,n)=>{let t=n._gl?.TEXTURE_2D;e.isCube&&(t=n._gl?.TEXTURE_CUBE_MAP),n._bindTextureDirectly(t,e,!0)},v=(e,n)=>{const t=e.getEngine();for(let l=0;l<n.fileInfo.images.length;l++){const i=n.fileInfo.images[l].levels[0];if(e._invertVScale=e.invertY,n.format===-1||n.format===h.cTFRGB565)if(e.type=10,e.format=4,t._features.basisNeedsPOT&&(Math.log2(i.width)%1!==0||Math.log2(i.height)%1!==0)){const c=new U(t,2);e._invertVScale=e.invertY,c.type=10,c.format=4,c.width=i.width+3&-4,c.height=i.height+3&-4,E(c,t),t._uploadDataToTextureDirectly(c,new Uint16Array(i.transcodedPixels.buffer),l,0,4,!0),t._rescaleTexture(c,e,t.scenes[0],t._getInternalFormat(4),()=>{t._releaseTexture(c),E(e,t)})}else e._invertVScale=!e.invertY,e.width=i.width+3&-4,e.height=i.height+3&-4,e.samplingMode=2,E(e,t),t._uploadDataToTextureDirectly(e,new Uint16Array(i.transcodedPixels.buffer),l,0,4,!0);else{e.width=i.width,e.height=i.height,e.generateMipMaps=n.fileInfo.images[l].levels.length>1;const c=z.GetInternalFormatFromBasisFormat(n.format,t);e.format=c,E(e,t);const s=n.fileInfo.images[l].levels;for(let o=0;o<s.length;o++){const a=s[o];t._uploadCompressedDataToTextureDirectly(e,c,a.width,a.height,a.transcodedPixels,l,o)}t._features.basisNeedsPOT&&(Math.log2(e.width)%1!==0||Math.log2(e.height)%1!==0)&&(D.Warn("Loaded .basis texture width and height are not a power of two. Texture wrapping will be set to Texture.CLAMP_ADDRESSMODE as other modes are not supported with non power of two dimensions in webGL 1."),e._cachedWrapU=P.CLAMP_ADDRESSMODE,e._cachedWrapV=P.CLAMP_ADDRESSMODE)}}},z={JSModuleURL:L.JSModuleURL,WasmModuleURL:L.WasmModuleURL,GetInternalFormatFromBasisFormat:V,TranscodeAsync:_,LoadTextureFromTranscodeResult:v};class X{constructor(){this.supportCascades=!1}loadCubeData(n,t,l,i,c){if(Array.isArray(n))return;const s=t.getEngine().getCaps(),o={supportedCompressionFormats:{etc1:!!s.etc1,s3tc:!!s.s3tc,pvrtc:!!s.pvrtc,etc2:!!s.etc2,astc:!!s.astc,bc7:!!s.bptc}};_(n,o).then(a=>{const d=a.fileInfo.images[0].levels.length>1&&t.generateMipMaps;v(t,a),t.getEngine()._setCubeMapTextureParams(t,d),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),i&&i()}).catch(a=>{F.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),t.isReady=!0,c&&c(a)})}loadData(n,t,l){const i=t.getEngine().getCaps(),c={supportedCompressionFormats:{etc1:!!i.etc1,s3tc:!!i.s3tc,pvrtc:!!i.pvrtc,etc2:!!i.etc2,astc:!!i.astc,bc7:!!i.bptc}};_(n,c).then(s=>{const o=s.fileInfo.images[0].levels[0],a=s.fileInfo.images[0].levels.length>1&&t.generateMipMaps;l(o.width,o.height,a,s.format!==-1,()=>{v(t,s)})}).catch(s=>{F.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),F.Warn(`Failed to transcode Basis file: ${s}`),l(0,0,!1,!1,()=>{},!0)})}}export{X as _BasisTextureLoader};
|
python_cad_tools-0.1.23/src/python_cad_tools/_viewer_static/assets/brdfTextureTools-BNEbZjdc.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./rgbdDecode.fragment-B6W4l6bx.js","./index-DMstpx40.js","./index-BZ1jSBLc.css","./helperFunctions-D3Ga2k6-.js","./rgbdEncode.fragment-DpZ6_aaU.js","./rgbdEncode.fragment-Chbio0ZH.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{w as v,A as o,P as M,x as Q}from"./index-DMstpx40.js";class r{static ExpandRGBDTexture(f){const A=f._texture;if(!A||!f.isRGBD)return;const w=A.getEngine(),e=w.getCaps(),H=A.isReady;let g=!1;e.textureHalfFloatRender&&e.textureHalfFloatLinearFiltering?(g=!0,A.type=2):e.textureFloatRender&&e.textureFloatLinearFiltering&&(g=!0,A.type=1),g&&(A.isReady=!1,A._isRGBD=!1,A.invertY=!1);const P=async()=>{const C=w.isWebGPU,n=C?1:0;A.isReady=!1,C?await v(()=>import("./rgbdDecode.fragment-B6W4l6bx.js"),__vite__mapDeps([0,1,2,3]),import.meta.url):await v(()=>import("./index-DMstpx40.js").then(I=>I.cN),__vite__mapDeps([1,2]),import.meta.url);const D=new M("rgbdDecode","rgbdDecode",null,null,1,null,3,w,!1,void 0,A.type,void 0,null,!1,void 0,n);D.externalTextureSamplerBinding=!0;const G=w.createRenderTargetTexture(A.width,{generateDepthBuffer:!1,generateMipMaps:!1,generateStencilBuffer:!1,samplingMode:A.samplingMode,type:A.type,format:5});D.onEffectCreatedObservable.addOnce(I=>{I.executeWhenCompiled(()=>{D.onApply=t=>{t._bindTexture("textureSampler",A),t.setFloat2("scale",1,1)},f.getScene().postProcessManager.directRender([D],G,!0),w.restoreDefaultFramebuffer(),w._releaseTexture(A),D&&D.dispose(),G._swapAndDie(A),A.isReady=!0})})};g&&(H?P():f.onLoadObservable.addOnce(P))}static async EncodeTextureToRGBD(f,A,w=0){return A.getEngine().isWebGPU?await v(()=>import("./rgbdEncode.fragment-DpZ6_aaU.js"),__vite__mapDeps([4,1,2,3]),import.meta.url):await v(()=>import("./rgbdEncode.fragment-Chbio0ZH.js"),__vite__mapDeps([5,1,2]),import.meta.url),await o("rgbdEncode",f,A,w,1,5)}}const s="data:image/png;base64,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",F="data:image/png;base64,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",L="data:image/png;base64,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";let z=0;const E=(B,f,A,w)=>{if(!B[A]){const e=B.useDelayedTextureLoading;B.useDelayedTextureLoading=!1;const H=B._blockEntityCollection;B._blockEntityCollection=!1;const g=Q.CreateFromBase64String(f,w+z++,B,!0,!1,Q.BILINEAR_SAMPLINGMODE);B._blockEntityCollection=H;const P=B.getEngine().getLoadedTexturesCache(),C=P.indexOf(g.getInternalTexture());C!==-1&&P.splice(C,1),g.isRGBD=!0,g.wrapU=Q.CLAMP_ADDRESSMODE,g.wrapV=Q.CLAMP_ADDRESSMODE,B[A]=g,B.useDelayedTextureLoading=e,r.ExpandRGBDTexture(g);const n=B.getEngine().onContextRestoredObservable.add(()=>{g.isRGBD=!0;const D=B.onBeforeRenderObservable.add(()=>{g.isReady()&&(B.onBeforeRenderObservable.remove(D),r.ExpandRGBDTexture(g))})});B.onDisposeObservable.add(()=>{B.getEngine().onContextRestoredObservable.remove(n)})}return B[A]},d=B=>E(B,s,"environmentBRDFTexture","EnvironmentBRDFTexture"),X=B=>E(B,F,"environmentFuzzBRDFTexture","EnvironmentFuzzBRDFTexture"),x=B=>E(B,L,"openPBREnvironmentBRDFTexture","OpenPBREnvironmentBRDFTexture");export{x as G,X as a,d as b};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{S as a}from"./index-
|
|
1
|
+
import{S as a}from"./index-DMstpx40.js";import"./reflectionFunction-BjE54o2G.js";const e="bumpFragmentMainFunctions",f=`#ifndef TEXRD_DEFINED
|
|
2
2
|
fn TEXRD(t: texture_2d<f32>,ts: sampler,uv: vec2f)->vec4f {return textureSample(t,ts,uv);}
|
|
3
3
|
#define TEXRD_DEFINED
|
|
4
4
|
#endif
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{S as t}from"./index-
|
|
1
|
+
import{S as t}from"./index-DMstpx40.js";const e="bumpVertex",n=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC)
|
|
2
2
|
#if defined(TANGENT) && defined(NORMAL)
|
|
3
3
|
var tbnNormal: vec3f=normalize(normalUpdated);var tbnTangent: vec3f=normalize(tangentUpdated.xyz);var tbnBitangent: vec3f=cross(tbnNormal,tbnTangent)*tangentUpdated.w;var matTemp= mat3x3f(finalWorld[0].xyz,finalWorld[1].xyz,finalWorld[2].xyz)* mat3x3f(tbnTangent,tbnBitangent,tbnNormal);vertexOutputs.vTBN0=matTemp[0];vertexOutputs.vTBN1=matTemp[1];vertexOutputs.vTBN2=matTemp[2];
|
|
4
4
|
#endif
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{S as d}from"./index-
|
|
1
|
+
import{S as d}from"./index-DMstpx40.js";const e="bumpVertexDeclaration",n=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC)
|
|
2
2
|
#if defined(TANGENT) && defined(NORMAL)
|
|
3
3
|
varying vTBN0: vec3f;varying vTBN1: vec3f;varying vTBN2: vec3f;
|
|
4
4
|
#endif
|