@fps-games/editor-deployment 0.2.3-beta.3 → 0.2.3-beta.5
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.
- package/bin/fps-editor-prepare.mjs +3 -4
- package/bin/fps-editor-project.mjs +18 -0
- package/bin/fps-editor-server.mjs +1 -1
- package/licenses/THIRD_PARTY_NOTICES.txt +2 -2
- package/manifest.json +1440 -1449
- package/npm-shrinkwrap.json +4 -3
- package/package.json +8 -4
- package/public/assets/abstractAudioBus-zin9aBGb.js +1 -0
- package/public/assets/animation-BJ8XM1EP.js +1 -0
- package/public/assets/animation-BJ8XM1EP.js.br +0 -0
- package/public/assets/animation-BJ8XM1EP.js.gz +0 -0
- package/public/assets/animationGroup-nIU37qTl.js +1 -0
- package/public/assets/animationGroup-nIU37qTl.js.br +0 -0
- package/public/assets/animationGroup-nIU37qTl.js.gz +0 -0
- package/public/assets/arcRotateCamera-Bpb6_-jM.js +1 -0
- package/public/assets/arcRotateCamera-Bpb6_-jM.js.br +0 -0
- package/public/assets/arcRotateCamera-Bpb6_-jM.js.gz +0 -0
- package/public/assets/babylon-core-B6Ot-GOK.js +1 -0
- package/public/assets/babylon-core-B6Ot-GOK.js.br +0 -0
- package/public/assets/babylon-core-B6Ot-GOK.js.gz +0 -0
- package/public/assets/babylon-core-DBdQTkWG.js +13882 -0
- package/public/assets/babylon-core-DBdQTkWG.js.br +0 -0
- package/public/assets/babylon-core-DBdQTkWG.js.gz +0 -0
- package/public/assets/basisTextureLoader-xaH1TU2T.js +1 -0
- package/public/assets/basisTextureLoader-xaH1TU2T.js.br +0 -0
- package/public/assets/basisTextureLoader-xaH1TU2T.js.gz +0 -0
- package/public/assets/bumpVertex-CydMViY3.js +173 -0
- package/public/assets/bumpVertex-CydMViY3.js.br +0 -0
- package/public/assets/bumpVertex-CydMViY3.js.gz +0 -0
- package/public/assets/bumpVertex-bM0VcD-v.js +177 -0
- package/public/assets/bumpVertex-bM0VcD-v.js.br +0 -0
- package/public/assets/bumpVertex-bM0VcD-v.js.gz +0 -0
- package/public/assets/chromaticAberration.fragment-2LQpSY6n.js +6 -0
- package/public/assets/chromaticAberration.fragment-2LQpSY6n.js.br +0 -0
- package/public/assets/chromaticAberration.fragment-2LQpSY6n.js.gz +0 -0
- package/public/assets/chromaticAberration.fragment-CPC2jGBk.js +7 -0
- package/public/assets/chromaticAberration.fragment-CPC2jGBk.js.br +0 -0
- package/public/assets/chromaticAberration.fragment-CPC2jGBk.js.gz +0 -0
- package/public/assets/circleOfConfusion.fragment-DWehhKOk.js +17 -0
- package/public/assets/circleOfConfusion.fragment-DWehhKOk.js.br +0 -0
- package/public/assets/circleOfConfusion.fragment-DWehhKOk.js.gz +0 -0
- package/public/assets/circleOfConfusion.fragment-WIeIzKLd.js +17 -0
- package/public/assets/circleOfConfusion.fragment-WIeIzKLd.js.br +0 -0
- package/public/assets/circleOfConfusion.fragment-WIeIzKLd.js.gz +0 -0
- package/public/assets/clipPlaneFragment-BQiHvjzo.js +46 -0
- package/public/assets/clipPlaneFragment-BQiHvjzo.js.br +0 -0
- package/public/assets/clipPlaneFragment-BQiHvjzo.js.gz +0 -0
- package/public/assets/clipPlaneVertex-D5EB-X5S.js +177 -0
- package/public/assets/clipPlaneVertex-D5EB-X5S.js.br +0 -0
- package/public/assets/clipPlaneVertex-D5EB-X5S.js.gz +0 -0
- package/public/assets/color.fragment-0xZe_dSa.js +20 -0
- package/public/assets/color.fragment-0xZe_dSa.js.br +0 -0
- package/public/assets/color.fragment-0xZe_dSa.js.gz +0 -0
- package/public/assets/color.fragment-BQNpLnxa.js +21 -0
- package/public/assets/color.fragment-BQNpLnxa.js.br +0 -0
- package/public/assets/color.fragment-BQNpLnxa.js.gz +0 -0
- package/public/assets/color.vertex-0geH1BI8.js +32 -0
- package/public/assets/color.vertex-0geH1BI8.js.br +0 -0
- package/public/assets/color.vertex-0geH1BI8.js.gz +0 -0
- package/public/assets/color.vertex-qtb2-mc5.js +39 -0
- package/public/assets/color.vertex-qtb2-mc5.js.br +0 -0
- package/public/assets/color.vertex-qtb2-mc5.js.gz +0 -0
- package/public/assets/dds-IzbrFkh8.js +1 -0
- package/public/assets/dds-IzbrFkh8.js.br +0 -0
- package/public/assets/dds-IzbrFkh8.js.gz +0 -0
- package/public/assets/ddsTextureLoader-D3ROWbwv.js +1 -0
- package/public/assets/ddsTextureLoader-D3ROWbwv.js.br +5 -0
- package/public/assets/ddsTextureLoader-D3ROWbwv.js.gz +0 -0
- package/public/assets/default.fragment-BAHNlmD5.js +526 -0
- package/public/assets/default.fragment-BAHNlmD5.js.br +0 -0
- package/public/assets/default.fragment-BAHNlmD5.js.gz +0 -0
- package/public/assets/default.fragment-D3MA9CRV.js +468 -0
- package/public/assets/default.fragment-D3MA9CRV.js.br +0 -0
- package/public/assets/default.fragment-D3MA9CRV.js.gz +0 -0
- package/public/assets/default.vertex-B1KwtIUb.js +181 -0
- package/public/assets/default.vertex-B1KwtIUb.js.br +0 -0
- package/public/assets/default.vertex-B1KwtIUb.js.gz +0 -0
- package/public/assets/default.vertex-Mne8Sq_G.js +193 -0
- package/public/assets/default.vertex-Mne8Sq_G.js.br +0 -0
- package/public/assets/default.vertex-Mne8Sq_G.js.gz +0 -0
- package/public/assets/defaultUboDeclaration-00t3po2f.js +7 -0
- package/public/assets/defaultUboDeclaration-00t3po2f.js.br +0 -0
- package/public/assets/defaultUboDeclaration-00t3po2f.js.gz +0 -0
- package/public/assets/defaultUboDeclaration-DAuovVEA.js +5 -0
- package/public/assets/defaultUboDeclaration-DAuovVEA.js.br +0 -0
- package/public/assets/defaultUboDeclaration-DAuovVEA.js.gz +0 -0
- package/public/assets/depth.fragment-Da86gbwP.js +40 -0
- package/public/assets/depth.fragment-Da86gbwP.js.br +0 -0
- package/public/assets/depth.fragment-Da86gbwP.js.gz +0 -0
- package/public/assets/depth.vertex-DPT_V_9f.js +57 -0
- package/public/assets/depth.vertex-DPT_V_9f.js.br +0 -0
- package/public/assets/depth.vertex-DPT_V_9f.js.gz +0 -0
- package/public/assets/depthBoxBlur.fragment-tYNfbhdh.js +6 -0
- package/public/assets/depthBoxBlur.fragment-tYNfbhdh.js.br +0 -0
- package/public/assets/depthBoxBlur.fragment-tYNfbhdh.js.gz +0 -0
- package/public/assets/depthBoxBlur.fragment-zrJ9DLe5.js +5 -0
- package/public/assets/depthBoxBlur.fragment-zrJ9DLe5.js.br +0 -0
- package/public/assets/depthBoxBlur.fragment-zrJ9DLe5.js.gz +0 -0
- package/public/assets/depthOfFieldMerge.fragment-Car-ami-.js +21 -0
- package/public/assets/depthOfFieldMerge.fragment-Car-ami-.js.br +0 -0
- package/public/assets/depthOfFieldMerge.fragment-Car-ami-.js.gz +0 -0
- package/public/assets/depthOfFieldMerge.fragment-eO7Ot6AR.js +26 -0
- package/public/assets/depthOfFieldMerge.fragment-eO7Ot6AR.js.br +0 -0
- package/public/assets/depthOfFieldMerge.fragment-eO7Ot6AR.js.gz +0 -0
- package/public/assets/easing-BdugUZqW.js +1 -0
- package/public/assets/easing-BdugUZqW.js.br +0 -0
- package/public/assets/easing-BdugUZqW.js.gz +0 -0
- package/public/assets/exrTextureLoader-DYq9r93V.js +1 -0
- package/public/assets/exrTextureLoader-DYq9r93V.js.br +0 -0
- package/public/assets/exrTextureLoader-DYq9r93V.js.gz +0 -0
- package/public/assets/flowGraphArrayIndexBlock-C3zDMjuo.js +1 -0
- package/public/assets/flowGraphArrayIndexBlock-C3zDMjuo.js.br +0 -0
- package/public/assets/flowGraphArrayIndexBlock-C3zDMjuo.js.gz +0 -0
- package/public/assets/flowGraphBezierCurveEasingBlock-DDoK8_8l.js +1 -0
- package/public/assets/flowGraphBezierCurveEasingBlock-DDoK8_8l.js.br +0 -0
- package/public/assets/flowGraphBezierCurveEasingBlock-DDoK8_8l.js.gz +0 -0
- package/public/assets/flowGraphBinaryOperationBlock-BKlR9DS-.js +1 -0
- package/public/assets/flowGraphBinaryOperationBlock-BKlR9DS-.js.br +3 -0
- package/public/assets/flowGraphBinaryOperationBlock-BKlR9DS-.js.gz +0 -0
- package/public/assets/flowGraphBranchBlock-Bup839Qd.js +1 -0
- package/public/assets/flowGraphBranchBlock-Bup839Qd.js.br +0 -0
- package/public/assets/flowGraphBranchBlock-Bup839Qd.js.gz +0 -0
- package/public/assets/flowGraphCachedOperationBlock-DnmbMTY7.js +1 -0
- package/public/assets/flowGraphCachedOperationBlock-DnmbMTY7.js.br +0 -0
- package/public/assets/flowGraphCachedOperationBlock-DnmbMTY7.js.gz +0 -0
- package/public/assets/flowGraphCancelDelayBlock-B9MfNdwj.js +1 -0
- package/public/assets/flowGraphCancelDelayBlock-B9MfNdwj.js.br +0 -0
- package/public/assets/flowGraphCancelDelayBlock-B9MfNdwj.js.gz +0 -0
- package/public/assets/flowGraphCodeExecutionBlock-auEOflkO.js +1 -0
- package/public/assets/flowGraphCodeExecutionBlock-auEOflkO.js.br +0 -0
- package/public/assets/flowGraphCodeExecutionBlock-auEOflkO.js.gz +0 -0
- package/public/assets/flowGraphConditionalDataBlock-BAia9WED.js +1 -0
- package/public/assets/flowGraphConditionalDataBlock-BAia9WED.js.br +0 -0
- package/public/assets/flowGraphConditionalDataBlock-BAia9WED.js.gz +0 -0
- package/public/assets/flowGraphConsoleLogBlock--6MvrOCG.js +1 -0
- package/public/assets/flowGraphConsoleLogBlock--6MvrOCG.js.br +0 -0
- package/public/assets/flowGraphConsoleLogBlock--6MvrOCG.js.gz +0 -0
- package/public/assets/flowGraphConstantBlock-FOfDeLIf.js +1 -0
- package/public/assets/flowGraphConstantBlock-FOfDeLIf.js.br +0 -0
- package/public/assets/flowGraphConstantBlock-FOfDeLIf.js.gz +0 -0
- package/public/assets/flowGraphContextBlock-BP5dmyKZ.js +1 -0
- package/public/assets/flowGraphContextBlock-BP5dmyKZ.js.br +0 -0
- package/public/assets/flowGraphContextBlock-BP5dmyKZ.js.gz +0 -0
- package/public/assets/flowGraphCounterBlock-DjKMvUGB.js +1 -0
- package/public/assets/flowGraphCounterBlock-DjKMvUGB.js.br +0 -0
- package/public/assets/flowGraphCounterBlock-DjKMvUGB.js.gz +0 -0
- package/public/assets/flowGraphDataSwitchBlock-gSJm410f.js +1 -0
- package/public/assets/flowGraphDataSwitchBlock-gSJm410f.js.br +0 -0
- package/public/assets/flowGraphDataSwitchBlock-gSJm410f.js.gz +0 -0
- package/public/assets/flowGraphDebounceBlock-CO5ptvWG.js +1 -0
- package/public/assets/flowGraphDebounceBlock-CO5ptvWG.js.br +0 -0
- package/public/assets/flowGraphDebounceBlock-CO5ptvWG.js.gz +0 -0
- package/public/assets/flowGraphDoNBlock-Bf26kum1.js +1 -0
- package/public/assets/flowGraphDoNBlock-Bf26kum1.js.br +0 -0
- package/public/assets/flowGraphDoNBlock-Bf26kum1.js.gz +0 -0
- package/public/assets/flowGraphEasingBlock-DtnL-aP_.js +1 -0
- package/public/assets/flowGraphEasingBlock-DtnL-aP_.js.br +0 -0
- package/public/assets/flowGraphEasingBlock-DtnL-aP_.js.gz +0 -0
- package/public/assets/flowGraphFlipFlopBlock-Bh_IN41P.js +1 -0
- package/public/assets/flowGraphFlipFlopBlock-Bh_IN41P.js.br +0 -0
- package/public/assets/flowGraphFlipFlopBlock-Bh_IN41P.js.gz +0 -0
- package/public/assets/flowGraphForLoopBlock-C3CLz9Iv.js +1 -0
- package/public/assets/flowGraphForLoopBlock-C3CLz9Iv.js.br +0 -0
- package/public/assets/flowGraphForLoopBlock-C3CLz9Iv.js.gz +0 -0
- package/public/assets/flowGraphFunctionReferenceBlock-Bz40tn10.js +1 -0
- package/public/assets/flowGraphFunctionReferenceBlock-Bz40tn10.js.br +0 -0
- package/public/assets/flowGraphFunctionReferenceBlock-Bz40tn10.js.gz +0 -0
- package/public/assets/flowGraphGetAssetBlock-DYP1H9Hj.js +1 -0
- package/public/assets/flowGraphGetAssetBlock-DYP1H9Hj.js.br +0 -0
- package/public/assets/flowGraphGetAssetBlock-DYP1H9Hj.js.gz +0 -0
- package/public/assets/flowGraphGetPropertyBlock-B6XVNxDR.js +1 -0
- package/public/assets/flowGraphGetPropertyBlock-B6XVNxDR.js.br +0 -0
- package/public/assets/flowGraphGetPropertyBlock-B6XVNxDR.js.gz +0 -0
- package/public/assets/flowGraphGetVariableBlock-BvaNDTu7.js +1 -0
- package/public/assets/flowGraphGetVariableBlock-BvaNDTu7.js.br +0 -0
- package/public/assets/flowGraphGetVariableBlock-BvaNDTu7.js.gz +0 -0
- package/public/assets/flowGraphIndexOfBlock-qm1Ab3oN.js +1 -0
- package/public/assets/flowGraphIndexOfBlock-qm1Ab3oN.js.br +0 -0
- package/public/assets/flowGraphIndexOfBlock-qm1Ab3oN.js.gz +0 -0
- package/public/assets/flowGraphInterpolationBlock-CmG25tSZ.js +1 -0
- package/public/assets/flowGraphInterpolationBlock-CmG25tSZ.js.br +0 -0
- package/public/assets/flowGraphInterpolationBlock-CmG25tSZ.js.gz +0 -0
- package/public/assets/flowGraphJsonPointerParserBlock-C8rfhc4j.js +1 -0
- package/public/assets/flowGraphJsonPointerParserBlock-C8rfhc4j.js.br +0 -0
- package/public/assets/flowGraphJsonPointerParserBlock-C8rfhc4j.js.gz +0 -0
- package/public/assets/flowGraphMathBlocks-BdiMH3MQ.js +1 -0
- package/public/assets/flowGraphMathBlocks-BdiMH3MQ.js.br +0 -0
- package/public/assets/flowGraphMathBlocks-BdiMH3MQ.js.gz +0 -0
- package/public/assets/flowGraphMathCombineExtractBlocks-CXvPWL3b.js +1 -0
- package/public/assets/flowGraphMathCombineExtractBlocks-CXvPWL3b.js.br +0 -0
- package/public/assets/flowGraphMathCombineExtractBlocks-CXvPWL3b.js.gz +0 -0
- package/public/assets/flowGraphMatrixMathBlocks-Cal7WQ7i.js +1 -0
- package/public/assets/flowGraphMatrixMathBlocks-Cal7WQ7i.js.br +0 -0
- package/public/assets/flowGraphMatrixMathBlocks-Cal7WQ7i.js.gz +0 -0
- package/public/assets/flowGraphMeshPickEventBlock-B8EU7KmL.js +1 -0
- package/public/assets/flowGraphMeshPickEventBlock-B8EU7KmL.js.br +0 -0
- package/public/assets/flowGraphMeshPickEventBlock-B8EU7KmL.js.gz +0 -0
- package/public/assets/flowGraphMultiGateBlock-GMcU5jv7.js +1 -0
- package/public/assets/flowGraphMultiGateBlock-GMcU5jv7.js.br +0 -0
- package/public/assets/flowGraphMultiGateBlock-GMcU5jv7.js.gz +0 -0
- package/public/assets/flowGraphPauseAnimationBlock-BKUeGFEQ.js +1 -0
- package/public/assets/flowGraphPauseAnimationBlock-BKUeGFEQ.js.br +0 -0
- package/public/assets/flowGraphPauseAnimationBlock-BKUeGFEQ.js.gz +0 -0
- package/public/assets/flowGraphPlayAnimationBlock-vvCkTY_Z.js +1 -0
- package/public/assets/flowGraphPlayAnimationBlock-vvCkTY_Z.js.br +0 -0
- package/public/assets/flowGraphPlayAnimationBlock-vvCkTY_Z.js.gz +0 -0
- package/public/assets/flowGraphPointerOutEventBlock-EEJ78HAF.js +1 -0
- package/public/assets/flowGraphPointerOutEventBlock-EEJ78HAF.js.br +0 -0
- package/public/assets/flowGraphPointerOutEventBlock-EEJ78HAF.js.gz +0 -0
- package/public/assets/flowGraphPointerOverEventBlock-QMzEzISN.js +1 -0
- package/public/assets/flowGraphPointerOverEventBlock-QMzEzISN.js.br +0 -0
- package/public/assets/flowGraphPointerOverEventBlock-QMzEzISN.js.gz +0 -0
- package/public/assets/flowGraphReceiveCustomEventBlock-B5jEx7xE.js +1 -0
- package/public/assets/flowGraphReceiveCustomEventBlock-B5jEx7xE.js.br +0 -0
- package/public/assets/flowGraphReceiveCustomEventBlock-B5jEx7xE.js.gz +0 -0
- package/public/assets/flowGraphSceneReadyEventBlock-MjViOZsL.js +1 -0
- package/public/assets/flowGraphSceneReadyEventBlock-MjViOZsL.js.br +0 -0
- package/public/assets/flowGraphSceneReadyEventBlock-MjViOZsL.js.gz +0 -0
- package/public/assets/flowGraphSceneTickEventBlock-lyjGPNYo.js +1 -0
- package/public/assets/flowGraphSceneTickEventBlock-lyjGPNYo.js.br +0 -0
- package/public/assets/flowGraphSceneTickEventBlock-lyjGPNYo.js.gz +0 -0
- package/public/assets/flowGraphSendCustomEventBlock-M0LLhV7D.js +1 -0
- package/public/assets/flowGraphSendCustomEventBlock-M0LLhV7D.js.br +0 -0
- package/public/assets/flowGraphSendCustomEventBlock-M0LLhV7D.js.gz +0 -0
- package/public/assets/flowGraphSequenceBlock-DocFLI4M.js +1 -0
- package/public/assets/flowGraphSequenceBlock-DocFLI4M.js.br +0 -0
- package/public/assets/flowGraphSequenceBlock-DocFLI4M.js.gz +0 -0
- package/public/assets/flowGraphSetDelayBlock-BDoJj0I_.js +1 -0
- package/public/assets/flowGraphSetDelayBlock-BDoJj0I_.js.br +0 -0
- package/public/assets/flowGraphSetDelayBlock-BDoJj0I_.js.gz +0 -0
- package/public/assets/flowGraphSetPropertyBlock-9jao3AHa.js +1 -0
- package/public/assets/flowGraphSetPropertyBlock-9jao3AHa.js.br +0 -0
- package/public/assets/flowGraphSetPropertyBlock-9jao3AHa.js.gz +0 -0
- package/public/assets/flowGraphSetVariableBlock-buwJMv9v.js +1 -0
- package/public/assets/flowGraphSetVariableBlock-buwJMv9v.js.br +0 -0
- package/public/assets/flowGraphSetVariableBlock-buwJMv9v.js.gz +0 -0
- package/public/assets/flowGraphStopAnimationBlock-CDWhmsC8.js +1 -0
- package/public/assets/flowGraphStopAnimationBlock-CDWhmsC8.js.br +0 -0
- package/public/assets/flowGraphStopAnimationBlock-CDWhmsC8.js.gz +0 -0
- package/public/assets/flowGraphSwitchBlock-DG5ReWET.js +1 -0
- package/public/assets/flowGraphSwitchBlock-DG5ReWET.js.br +0 -0
- package/public/assets/flowGraphSwitchBlock-DG5ReWET.js.gz +0 -0
- package/public/assets/flowGraphThrottleBlock-Bgyx9UOo.js +1 -0
- package/public/assets/flowGraphThrottleBlock-Bgyx9UOo.js.br +0 -0
- package/public/assets/flowGraphThrottleBlock-Bgyx9UOo.js.gz +0 -0
- package/public/assets/flowGraphTransformCoordinatesSystemBlock-CUUmRj2j.js +1 -0
- package/public/assets/flowGraphTransformCoordinatesSystemBlock-CUUmRj2j.js.br +0 -0
- package/public/assets/flowGraphTransformCoordinatesSystemBlock-CUUmRj2j.js.gz +0 -0
- package/public/assets/flowGraphTypeToTypeBlocks-D7N8ZT_V.js +1 -0
- package/public/assets/flowGraphTypeToTypeBlocks-D7N8ZT_V.js.br +0 -0
- package/public/assets/flowGraphTypeToTypeBlocks-D7N8ZT_V.js.gz +0 -0
- package/public/assets/flowGraphUnaryOperationBlock-Bu73VxMC.js +1 -0
- package/public/assets/flowGraphUnaryOperationBlock-Bu73VxMC.js.br +0 -0
- package/public/assets/flowGraphUnaryOperationBlock-Bu73VxMC.js.gz +0 -0
- package/public/assets/flowGraphVectorMathBlocks-CqVzbdAw.js +1 -0
- package/public/assets/flowGraphVectorMathBlocks-CqVzbdAw.js.br +0 -0
- package/public/assets/flowGraphVectorMathBlocks-CqVzbdAw.js.gz +0 -0
- package/public/assets/flowGraphWaitAllBlock-xmBmiluG.js +1 -0
- package/public/assets/flowGraphWaitAllBlock-xmBmiluG.js.br +0 -0
- package/public/assets/flowGraphWaitAllBlock-xmBmiluG.js.gz +0 -0
- package/public/assets/flowGraphWhileLoopBlock-Ct2rHXgO.js +1 -0
- package/public/assets/flowGraphWhileLoopBlock-Ct2rHXgO.js.br +0 -0
- package/public/assets/flowGraphWhileLoopBlock-Ct2rHXgO.js.gz +0 -0
- package/public/assets/fogFragmentDeclaration-C-9jZMBi.js +22 -0
- package/public/assets/fogFragmentDeclaration-C-9jZMBi.js.br +0 -0
- package/public/assets/fogFragmentDeclaration-C-9jZMBi.js.gz +0 -0
- package/public/assets/fogFragmentDeclaration-CpAbKvc3.js +23 -0
- package/public/assets/fogFragmentDeclaration-CpAbKvc3.js.br +0 -0
- package/public/assets/fogFragmentDeclaration-CpAbKvc3.js.gz +0 -0
- package/public/assets/glowBlurPostProcess.fragment-C77x1kl1.js +7 -0
- package/public/assets/glowBlurPostProcess.fragment-C77x1kl1.js.br +0 -0
- package/public/assets/glowBlurPostProcess.fragment-C77x1kl1.js.gz +0 -0
- package/public/assets/glowBlurPostProcess.fragment-C7miknry.js +7 -0
- package/public/assets/glowBlurPostProcess.fragment-C7miknry.js.br +2 -0
- package/public/assets/glowBlurPostProcess.fragment-C7miknry.js.gz +0 -0
- package/public/assets/glowMapGeneration.fragment-BAqrUGS4.js +63 -0
- package/public/assets/glowMapGeneration.fragment-BAqrUGS4.js.br +0 -0
- package/public/assets/glowMapGeneration.fragment-BAqrUGS4.js.gz +0 -0
- package/public/assets/glowMapGeneration.fragment-CMvy-ILZ.js +63 -0
- package/public/assets/glowMapGeneration.fragment-CMvy-ILZ.js.br +0 -0
- package/public/assets/glowMapGeneration.fragment-CMvy-ILZ.js.gz +0 -0
- package/public/assets/glowMapGeneration.vertex-BThT8Jce.js +75 -0
- package/public/assets/glowMapGeneration.vertex-BThT8Jce.js.br +0 -0
- package/public/assets/glowMapGeneration.vertex-BThT8Jce.js.gz +0 -0
- package/public/assets/glowMapGeneration.vertex-mq9WR5EZ.js +75 -0
- package/public/assets/glowMapGeneration.vertex-mq9WR5EZ.js.br +0 -0
- package/public/assets/glowMapGeneration.vertex-mq9WR5EZ.js.gz +0 -0
- package/public/assets/glowMapMerge.fragment-BtMIQDli.js +25 -0
- package/public/assets/glowMapMerge.fragment-BtMIQDli.js.br +0 -0
- package/public/assets/glowMapMerge.fragment-BtMIQDli.js.gz +0 -0
- package/public/assets/glowMapMerge.fragment-CYj1SIfc.js +23 -0
- package/public/assets/glowMapMerge.fragment-CYj1SIfc.js.br +0 -0
- package/public/assets/glowMapMerge.fragment-CYj1SIfc.js.gz +0 -0
- package/public/assets/glowMapMerge.vertex-BilMgMCX.js +8 -0
- package/public/assets/glowMapMerge.vertex-BilMgMCX.js.br +0 -0
- package/public/assets/glowMapMerge.vertex-BilMgMCX.js.gz +0 -0
- package/public/assets/glowMapMerge.vertex-ChJNqQPz.js +7 -0
- package/public/assets/glowMapMerge.vertex-ChJNqQPz.js.br +0 -0
- package/public/assets/glowMapMerge.vertex-ChJNqQPz.js.gz +0 -0
- package/public/assets/grain.fragment-D6WdAOpZ.js +6 -0
- package/public/assets/grain.fragment-D6WdAOpZ.js.br +0 -0
- package/public/assets/grain.fragment-D6WdAOpZ.js.gz +0 -0
- package/public/assets/grain.fragment-DCpxKIZw.js +5 -0
- package/public/assets/grain.fragment-DCpxKIZw.js.br +0 -0
- package/public/assets/grain.fragment-DCpxKIZw.js.gz +0 -0
- package/public/assets/harmonicsFunctions-B5nauyTb.js +189 -0
- package/public/assets/harmonicsFunctions-B5nauyTb.js.br +0 -0
- package/public/assets/harmonicsFunctions-B5nauyTb.js.gz +0 -0
- package/public/assets/harmonicsFunctions-DVIRrUZs.js +192 -0
- package/public/assets/harmonicsFunctions-DVIRrUZs.js.br +0 -0
- package/public/assets/harmonicsFunctions-DVIRrUZs.js.gz +0 -0
- package/public/assets/hdrTextureLoader-Dfs_Fv5B.js +2 -0
- package/public/assets/hdrTextureLoader-Dfs_Fv5B.js.br +0 -0
- package/public/assets/hdrTextureLoader-Dfs_Fv5B.js.gz +0 -0
- package/public/assets/hemisphericLight-BkYyeXbK.js +1329 -0
- package/public/assets/hemisphericLight-BkYyeXbK.js.br +0 -0
- package/public/assets/hemisphericLight-BkYyeXbK.js.gz +0 -0
- package/public/assets/iesTextureLoader-I2E-BXCc.js +2 -0
- package/public/assets/iesTextureLoader-I2E-BXCc.js.br +0 -0
- package/public/assets/iesTextureLoader-I2E-BXCc.js.gz +0 -0
- package/public/assets/index-CzHwtW4R.js +4 -0
- package/public/assets/index-CzHwtW4R.js.br +0 -0
- package/public/assets/index-CzHwtW4R.js.gz +0 -0
- package/public/assets/index-ZnhNI5EO.js +1 -0
- package/public/assets/index-ZnhNI5EO.js.br +0 -0
- package/public/assets/index-ZnhNI5EO.js.gz +0 -0
- package/public/assets/instancesDeclaration-DcwHJpHY.js +23 -0
- package/public/assets/instancesDeclaration-DcwHJpHY.js.br +2 -0
- package/public/assets/instancesDeclaration-DcwHJpHY.js.gz +0 -0
- package/public/assets/ktxTextureLoader-zpgT--10.js +1 -0
- package/public/assets/ktxTextureLoader-zpgT--10.js.br +0 -0
- package/public/assets/ktxTextureLoader-zpgT--10.js.gz +0 -0
- package/public/assets/lazy-CI-V5lCV.js +2 -0
- package/public/assets/lazy-CI-V5lCV.js.br +0 -0
- package/public/assets/lazy-CI-V5lCV.js.gz +0 -0
- package/public/assets/lod.fragment-B28SQFUx.js +3 -0
- package/public/assets/lod.fragment-B28SQFUx.js.br +0 -0
- package/public/assets/lod.fragment-B28SQFUx.js.gz +0 -0
- package/public/assets/lod.fragment-DOjU_E37.js +3 -0
- package/public/assets/lod.fragment-DOjU_E37.js.br +2 -0
- package/public/assets/lod.fragment-DOjU_E37.js.gz +0 -0
- package/public/assets/lodCube.fragment-B_ALsGmh.js +22 -0
- package/public/assets/lodCube.fragment-B_ALsGmh.js.br +0 -0
- package/public/assets/lodCube.fragment-B_ALsGmh.js.gz +0 -0
- package/public/assets/lodCube.fragment-CzeVIOa3.js +22 -0
- package/public/assets/lodCube.fragment-CzeVIOa3.js.br +0 -0
- package/public/assets/lodCube.fragment-CzeVIOa3.js.gz +0 -0
- package/public/assets/logDepthDeclaration-C8UZWL7A.js +4 -0
- package/public/assets/logDepthDeclaration-DSZN0VWa.js +4 -0
- package/public/assets/logDepthFragment-BaJ2YjZ0.js +4 -0
- package/public/assets/logDepthFragment-BaJ2YjZ0.js.br +0 -0
- package/public/assets/logDepthFragment-BaJ2YjZ0.js.gz +0 -0
- package/public/assets/logDepthFragment-CpZV3R_E.js +4 -0
- package/public/assets/logDepthVertex-B8jNoEwN.js +4 -0
- package/public/assets/logDepthVertex-B8jNoEwN.js.br +0 -0
- package/public/assets/logDepthVertex-B8jNoEwN.js.gz +0 -0
- package/public/assets/logDepthVertex-xgQTn7wg.js +4 -0
- package/public/assets/logDepthVertex-xgQTn7wg.js.br +0 -0
- package/public/assets/logDepthVertex-xgQTn7wg.js.gz +0 -0
- package/public/assets/mainUVVaryingDeclaration-CTzt4kpd.js +4 -0
- package/public/assets/mainUVVaryingDeclaration-DPCXXS4Y.js +4 -0
- package/public/assets/meshUboDeclaration-C5p-TivH.js +13 -0
- package/public/assets/meshUboDeclaration-C5p-TivH.js.br +0 -0
- package/public/assets/meshUboDeclaration-C5p-TivH.js.gz +0 -0
- package/public/assets/meshUboDeclaration-DKldQKni.js +13 -0
- package/public/assets/meshUboDeclaration-DKldQKni.js.br +0 -0
- package/public/assets/meshUboDeclaration-DKldQKni.js.gz +0 -0
- package/public/assets/morphTargetsVertex-BDbfSote.js +100 -0
- package/public/assets/morphTargetsVertex-BDbfSote.js.br +0 -0
- package/public/assets/morphTargetsVertex-BDbfSote.js.gz +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-DtE63qrD.js +3 -0
- package/public/assets/oitFinalSimpleBlend.fragment-DtE63qrD.js.br +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-DtE63qrD.js.gz +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-ZwpH3v_v.js +2 -0
- package/public/assets/oitFinalSimpleBlend.fragment-ZwpH3v_v.js.br +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-ZwpH3v_v.js.gz +0 -0
- package/public/assets/oitFragment-B8hFhX-8.js +1077 -0
- package/public/assets/oitFragment-B8hFhX-8.js.br +0 -0
- package/public/assets/oitFragment-B8hFhX-8.js.gz +0 -0
- package/public/assets/oitFragment-B_HlWcYZ.js +1202 -0
- package/public/assets/oitFragment-B_HlWcYZ.js.br +0 -0
- package/public/assets/oitFragment-B_HlWcYZ.js.gz +0 -0
- package/public/assets/openpbrMaterial-t_lYoXh4.js +2 -0
- package/public/assets/openpbrMaterial-t_lYoXh4.js.br +0 -0
- package/public/assets/openpbrMaterial-t_lYoXh4.js.gz +0 -0
- package/public/assets/outline.fragment-DEsg98mo.js +21 -0
- package/public/assets/outline.fragment-DEsg98mo.js.br +0 -0
- package/public/assets/outline.fragment-DEsg98mo.js.gz +0 -0
- package/public/assets/outline.fragment-WqsugjI-.js +18 -0
- package/public/assets/outline.fragment-WqsugjI-.js.br +3 -0
- package/public/assets/outline.fragment-WqsugjI-.js.gz +0 -0
- package/public/assets/outline.vertex-CVL3AfNh.js +47 -0
- package/public/assets/outline.vertex-CVL3AfNh.js.br +0 -0
- package/public/assets/outline.vertex-CVL3AfNh.js.gz +0 -0
- package/public/assets/outline.vertex-CtQ-HC3X.js +47 -0
- package/public/assets/outline.vertex-CtQ-HC3X.js.br +0 -0
- package/public/assets/outline.vertex-CtQ-HC3X.js.gz +0 -0
- package/public/assets/passCube.fragment-CHI4OPgd.js +23 -0
- package/public/assets/passCube.fragment-CHI4OPgd.js.br +0 -0
- package/public/assets/passCube.fragment-CHI4OPgd.js.gz +0 -0
- package/public/assets/passCube.fragment-DLbzh6pI.js +23 -0
- package/public/assets/passCube.fragment-DLbzh6pI.js.br +0 -0
- package/public/assets/passCube.fragment-DLbzh6pI.js.gz +0 -0
- package/public/assets/pbr.fragment-DHPEcGrm.js +3327 -0
- package/public/assets/pbr.fragment-DHPEcGrm.js.br +0 -0
- package/public/assets/pbr.fragment-DHPEcGrm.js.gz +0 -0
- package/public/assets/pbr.fragment-KiX_RvyZ.js +3277 -0
- package/public/assets/pbr.fragment-KiX_RvyZ.js.br +0 -0
- package/public/assets/pbr.fragment-KiX_RvyZ.js.gz +0 -0
- package/public/assets/pbr.vertex-CVSRg4tx.js +357 -0
- package/public/assets/pbr.vertex-CVSRg4tx.js.br +0 -0
- package/public/assets/pbr.vertex-CVSRg4tx.js.gz +0 -0
- package/public/assets/pbr.vertex-Dp30Rtkl.js +227 -0
- package/public/assets/pbr.vertex-Dp30Rtkl.js.br +0 -0
- package/public/assets/pbr.vertex-Dp30Rtkl.js.gz +0 -0
- package/public/assets/playable-sdk-D6RL-8B7.js +135 -0
- package/public/assets/playable-sdk-D6RL-8B7.js.br +0 -0
- package/public/assets/playable-sdk-D6RL-8B7.js.gz +0 -0
- package/public/assets/playable-standard-project-CkKWpnr-.js +4943 -0
- package/public/assets/playable-standard-project-CkKWpnr-.js.br +0 -0
- package/public/assets/playable-standard-project-CkKWpnr-.js.gz +0 -0
- package/public/assets/rgbdDecode.fragment-CU4ChTYE.js +5 -0
- package/public/assets/rgbdDecode.fragment-CU4ChTYE.js.br +0 -0
- package/public/assets/rgbdDecode.fragment-CU4ChTYE.js.gz +0 -0
- package/public/assets/rgbdDecode.fragment-DhrCd3U4.js +5 -0
- package/public/assets/rgbdDecode.fragment-DhrCd3U4.js.br +3 -0
- package/public/assets/rgbdDecode.fragment-DhrCd3U4.js.gz +0 -0
- package/public/assets/rgbdEncode.fragment-Bt1zaovT.js +5 -0
- package/public/assets/rgbdEncode.fragment-Bt1zaovT.js.br +0 -0
- package/public/assets/rgbdEncode.fragment-Bt1zaovT.js.gz +0 -0
- package/public/assets/rgbdEncode.fragment-CfKDkRU3.js +5 -0
- package/public/assets/rgbdEncode.fragment-CfKDkRU3.js.br +0 -0
- package/public/assets/rgbdEncode.fragment-CfKDkRU3.js.gz +0 -0
- package/public/assets/sceneLoader-DS5g2vTC.js +1 -0
- package/public/assets/sceneLoader-DS5g2vTC.js.br +0 -0
- package/public/assets/sceneLoader-DS5g2vTC.js.gz +0 -0
- package/public/assets/screenSpaceCurvature.fragment-Od67z-rQ.js +15 -0
- package/public/assets/screenSpaceCurvature.fragment-Od67z-rQ.js.br +0 -0
- package/public/assets/screenSpaceCurvature.fragment-Od67z-rQ.js.gz +0 -0
- package/public/assets/selection.fragment-CRMhdE35.js +35 -0
- package/public/assets/selection.fragment-CRMhdE35.js.br +0 -0
- package/public/assets/selection.fragment-CRMhdE35.js.gz +0 -0
- package/public/assets/selection.fragment-cSqXB6nx.js +35 -0
- package/public/assets/selection.fragment-cSqXB6nx.js.br +0 -0
- package/public/assets/selection.fragment-cSqXB6nx.js.gz +0 -0
- package/public/assets/selection.vertex-B5sPJWi2.js +74 -0
- package/public/assets/selection.vertex-B5sPJWi2.js.br +0 -0
- package/public/assets/selection.vertex-B5sPJWi2.js.gz +0 -0
- package/public/assets/selection.vertex-Dp4qd1GF.js +73 -0
- package/public/assets/selection.vertex-Dp4qd1GF.js.br +0 -0
- package/public/assets/selection.vertex-Dp4qd1GF.js.gz +0 -0
- package/public/assets/selectionOutline.fragment-CaYdhbIY.js +47 -0
- package/public/assets/selectionOutline.fragment-CaYdhbIY.js.br +0 -0
- package/public/assets/selectionOutline.fragment-CaYdhbIY.js.gz +0 -0
- package/public/assets/selectionOutline.fragment-RBpUe89m.js +48 -0
- package/public/assets/selectionOutline.fragment-RBpUe89m.js.br +0 -0
- package/public/assets/selectionOutline.fragment-RBpUe89m.js.gz +0 -0
- package/public/assets/shadowMap.fragment-BecpzSny.js +78 -0
- package/public/assets/shadowMap.fragment-BecpzSny.js.br +0 -0
- package/public/assets/shadowMap.fragment-BecpzSny.js.gz +0 -0
- package/public/assets/shadowMap.fragment-BhrOFpmK.js +79 -0
- package/public/assets/shadowMap.fragment-BhrOFpmK.js.br +0 -0
- package/public/assets/shadowMap.fragment-BhrOFpmK.js.gz +0 -0
- package/public/assets/shadowMap.vertex-DV4Ec23Y.js +119 -0
- package/public/assets/shadowMap.vertex-DV4Ec23Y.js.br +0 -0
- package/public/assets/shadowMap.vertex-DV4Ec23Y.js.gz +0 -0
- package/public/assets/shadowMap.vertex-Dpx2-6XS.js +109 -0
- package/public/assets/shadowMap.vertex-Dpx2-6XS.js.br +0 -0
- package/public/assets/shadowMap.vertex-Dpx2-6XS.js.gz +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-BHumE7-J.js +4 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-BHumE7-J.js.br +2 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-BHumE7-J.js.gz +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-CrPC6Hns.js +4 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-CrPC6Hns.js.br +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-CrPC6Hns.js.gz +0 -0
- package/public/assets/sharpen.fragment-CPdQPlDe.js +8 -0
- package/public/assets/sharpen.fragment-CPdQPlDe.js.br +0 -0
- package/public/assets/sharpen.fragment-CPdQPlDe.js.gz +0 -0
- package/public/assets/textureMerger.fragment-BNxx2w1v.js +76 -0
- package/public/assets/textureMerger.fragment-BNxx2w1v.js.br +0 -0
- package/public/assets/textureMerger.fragment-BNxx2w1v.js.gz +0 -0
- package/public/assets/textureMerger.fragment-CPq4n9w5.js +84 -0
- package/public/assets/textureMerger.fragment-CPq4n9w5.js.br +0 -0
- package/public/assets/textureMerger.fragment-CPq4n9w5.js.gz +0 -0
- package/public/assets/tgaTextureLoader-B7dlONGx.js +1 -0
- package/public/assets/tgaTextureLoader-B7dlONGx.js.br +0 -0
- package/public/assets/tgaTextureLoader-B7dlONGx.js.gz +0 -0
- package/public/assets/vertexColorMixing-BUQkJeP0.js +24 -0
- package/public/assets/vertexColorMixing-BUQkJeP0.js.br +2 -0
- package/public/assets/vertexColorMixing-BUQkJeP0.js.gz +0 -0
- package/public/assets/vertexColorMixing-Co5x3WYA.js +20 -0
- package/public/assets/vertexColorMixing-Co5x3WYA.js.br +0 -0
- package/public/assets/vertexColorMixing-Co5x3WYA.js.gz +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-D01l1w1u.js +11 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-D01l1w1u.js.br +1 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-D01l1w1u.js.gz +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-Dq5kceRW.js +12 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-Dq5kceRW.js.br +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-Dq5kceRW.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-BCxtzv0C.js +13 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-BCxtzv0C.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-BCxtzv0C.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-DwEKCs2S.js +15 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-DwEKCs2S.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-DwEKCs2S.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-CNPaSIo7.js +5 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-CNPaSIo7.js.br +2 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-CNPaSIo7.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-EiQlWi_X.js +4 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-EiQlWi_X.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-EiQlWi_X.js.gz +0 -0
- package/public/assets/webAudioBus-DYpSKoOA.js +1 -0
- package/public/assets/webAudioBus-DYpSKoOA.js.br +0 -0
- package/public/assets/webAudioBus-DYpSKoOA.js.gz +0 -0
- package/public/assets/webAudioMainBus-CP3f56US.js +1 -0
- package/public/assets/webAudioMainBus-CP3f56US.js.br +0 -0
- package/public/assets/webAudioMainBus-CP3f56US.js.gz +0 -0
- package/public/index.html +5 -3
- package/public/index.html.br +0 -0
- package/public/index.html.gz +0 -0
- package/runtime/editor-control-plane.mjs +5 -5
- package/worker/editor-service-worker.mjs +28 -1
- package/public/assets/abstractAudioBus-DKeLA-55.js +0 -1
- package/public/assets/animation-DY4Gs-Pw.js +0 -1
- package/public/assets/animation-DY4Gs-Pw.js.br +0 -0
- package/public/assets/animation-DY4Gs-Pw.js.gz +0 -0
- package/public/assets/animationGroup-BN6ExD_I.js +0 -1
- package/public/assets/animationGroup-BN6ExD_I.js.br +0 -0
- package/public/assets/animationGroup-BN6ExD_I.js.gz +0 -0
- package/public/assets/arcRotateCamera-BrOEThh0.js +0 -1
- package/public/assets/arcRotateCamera-BrOEThh0.js.br +0 -0
- package/public/assets/arcRotateCamera-BrOEThh0.js.gz +0 -0
- package/public/assets/babylon-core-BiQ_mrkl.js +0 -1
- package/public/assets/babylon-core-BiQ_mrkl.js.br +0 -0
- package/public/assets/babylon-core-BiQ_mrkl.js.gz +0 -0
- package/public/assets/babylon-core-DygJEuf6.js +0 -13882
- package/public/assets/babylon-core-DygJEuf6.js.br +0 -0
- package/public/assets/babylon-core-DygJEuf6.js.gz +0 -0
- package/public/assets/basisTextureLoader-BWwwG7Gw.js +0 -1
- package/public/assets/basisTextureLoader-BWwwG7Gw.js.br +0 -0
- package/public/assets/basisTextureLoader-BWwwG7Gw.js.gz +0 -0
- package/public/assets/bumpVertex-CzYtMFbI.js +0 -177
- package/public/assets/bumpVertex-CzYtMFbI.js.br +0 -0
- package/public/assets/bumpVertex-CzYtMFbI.js.gz +0 -0
- package/public/assets/bumpVertex-DIMp0NiU.js +0 -173
- package/public/assets/bumpVertex-DIMp0NiU.js.br +0 -0
- package/public/assets/bumpVertex-DIMp0NiU.js.gz +0 -0
- package/public/assets/chromaticAberration.fragment-BJhO9WeA.js +0 -7
- package/public/assets/chromaticAberration.fragment-BJhO9WeA.js.br +0 -0
- package/public/assets/chromaticAberration.fragment-BJhO9WeA.js.gz +0 -0
- package/public/assets/chromaticAberration.fragment-DEAEmyJy.js +0 -6
- package/public/assets/chromaticAberration.fragment-DEAEmyJy.js.br +0 -0
- package/public/assets/chromaticAberration.fragment-DEAEmyJy.js.gz +0 -0
- package/public/assets/circleOfConfusion.fragment-DGnleQIE.js +0 -17
- package/public/assets/circleOfConfusion.fragment-DGnleQIE.js.br +0 -0
- package/public/assets/circleOfConfusion.fragment-DGnleQIE.js.gz +0 -0
- package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js +0 -17
- package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js.br +0 -0
- package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js.gz +0 -0
- package/public/assets/clipPlaneFragment-Da_1RMjt.js +0 -46
- package/public/assets/clipPlaneFragment-Da_1RMjt.js.br +0 -0
- package/public/assets/clipPlaneFragment-Da_1RMjt.js.gz +0 -0
- package/public/assets/clipPlaneVertex-B8PIfZU_.js +0 -177
- package/public/assets/clipPlaneVertex-B8PIfZU_.js.br +0 -0
- package/public/assets/clipPlaneVertex-B8PIfZU_.js.gz +0 -0
- package/public/assets/color.fragment-Bf62ouS6.js +0 -20
- package/public/assets/color.fragment-Bf62ouS6.js.br +0 -0
- package/public/assets/color.fragment-Bf62ouS6.js.gz +0 -0
- package/public/assets/color.fragment-DtJC5xR0.js +0 -21
- package/public/assets/color.fragment-DtJC5xR0.js.br +0 -0
- package/public/assets/color.fragment-DtJC5xR0.js.gz +0 -0
- package/public/assets/color.vertex-DYnzh3f-.js +0 -39
- package/public/assets/color.vertex-DYnzh3f-.js.br +0 -0
- package/public/assets/color.vertex-DYnzh3f-.js.gz +0 -0
- package/public/assets/color.vertex-foaAsgqw.js +0 -32
- package/public/assets/color.vertex-foaAsgqw.js.br +0 -0
- package/public/assets/color.vertex-foaAsgqw.js.gz +0 -0
- package/public/assets/dds-CbA4nCCq.js +0 -1
- package/public/assets/dds-CbA4nCCq.js.br +0 -0
- package/public/assets/dds-CbA4nCCq.js.gz +0 -0
- package/public/assets/ddsTextureLoader-Bwa3u-Gp.js +0 -1
- package/public/assets/ddsTextureLoader-Bwa3u-Gp.js.br +0 -0
- package/public/assets/ddsTextureLoader-Bwa3u-Gp.js.gz +0 -0
- package/public/assets/default.fragment-BKaVVFYF.js +0 -526
- package/public/assets/default.fragment-BKaVVFYF.js.br +0 -0
- package/public/assets/default.fragment-BKaVVFYF.js.gz +0 -0
- package/public/assets/default.fragment-DjNCicws.js +0 -468
- package/public/assets/default.fragment-DjNCicws.js.br +0 -0
- package/public/assets/default.fragment-DjNCicws.js.gz +0 -0
- package/public/assets/default.vertex-CKOvcJ54.js +0 -193
- package/public/assets/default.vertex-CKOvcJ54.js.br +0 -0
- package/public/assets/default.vertex-CKOvcJ54.js.gz +0 -0
- package/public/assets/default.vertex-DyPOsib0.js +0 -181
- package/public/assets/default.vertex-DyPOsib0.js.br +0 -0
- package/public/assets/default.vertex-DyPOsib0.js.gz +0 -0
- package/public/assets/defaultUboDeclaration-ChgZa3Dv.js +0 -5
- package/public/assets/defaultUboDeclaration-ChgZa3Dv.js.br +0 -0
- package/public/assets/defaultUboDeclaration-ChgZa3Dv.js.gz +0 -0
- package/public/assets/defaultUboDeclaration-Dzd2ch6X.js +0 -7
- package/public/assets/defaultUboDeclaration-Dzd2ch6X.js.br +0 -0
- package/public/assets/defaultUboDeclaration-Dzd2ch6X.js.gz +0 -0
- package/public/assets/depth.fragment-B9FDfPgW.js +0 -40
- package/public/assets/depth.fragment-B9FDfPgW.js.br +0 -2
- package/public/assets/depth.fragment-B9FDfPgW.js.gz +0 -0
- package/public/assets/depth.vertex-DXkbiW3p.js +0 -57
- package/public/assets/depth.vertex-DXkbiW3p.js.br +0 -0
- package/public/assets/depth.vertex-DXkbiW3p.js.gz +0 -0
- package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js +0 -6
- package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js.br +0 -0
- package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js.gz +0 -0
- package/public/assets/depthBoxBlur.fragment-DUm61npj.js +0 -5
- package/public/assets/depthBoxBlur.fragment-DUm61npj.js.br +0 -0
- package/public/assets/depthBoxBlur.fragment-DUm61npj.js.gz +0 -0
- package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js +0 -21
- package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js.br +0 -0
- package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js.gz +0 -0
- package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js +0 -26
- package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js.br +0 -0
- package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js.gz +0 -0
- package/public/assets/easing-BkcTAuOI.js +0 -1
- package/public/assets/easing-BkcTAuOI.js.br +0 -0
- package/public/assets/easing-BkcTAuOI.js.gz +0 -0
- package/public/assets/exrTextureLoader-DD6CMgpF.js +0 -1
- package/public/assets/exrTextureLoader-DD6CMgpF.js.br +0 -0
- package/public/assets/exrTextureLoader-DD6CMgpF.js.gz +0 -0
- package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js +0 -1
- package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js.br +0 -0
- package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js.gz +0 -0
- package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js +0 -1
- package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js.br +0 -0
- package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js.gz +0 -0
- package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js +0 -1
- package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js.br +0 -0
- package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js.gz +0 -0
- package/public/assets/flowGraphBranchBlock-BMgiYImb.js +0 -1
- package/public/assets/flowGraphBranchBlock-BMgiYImb.js.br +0 -0
- package/public/assets/flowGraphBranchBlock-BMgiYImb.js.gz +0 -0
- package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js +0 -1
- package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js.br +0 -0
- package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js.gz +0 -0
- package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js +0 -1
- package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js.br +0 -0
- package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js.gz +0 -0
- package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js +0 -1
- package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js.br +0 -0
- package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js.gz +0 -0
- package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js +0 -1
- package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js.br +0 -0
- package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js.gz +0 -0
- package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js +0 -1
- package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js.br +0 -0
- package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js.gz +0 -0
- package/public/assets/flowGraphConstantBlock-CN1Myhpi.js +0 -1
- package/public/assets/flowGraphConstantBlock-CN1Myhpi.js.br +0 -0
- package/public/assets/flowGraphConstantBlock-CN1Myhpi.js.gz +0 -0
- package/public/assets/flowGraphContextBlock-BbRTNgI4.js +0 -1
- package/public/assets/flowGraphContextBlock-BbRTNgI4.js.br +0 -0
- package/public/assets/flowGraphContextBlock-BbRTNgI4.js.gz +0 -0
- package/public/assets/flowGraphCounterBlock-DTqShVsi.js +0 -1
- package/public/assets/flowGraphCounterBlock-DTqShVsi.js.br +0 -0
- package/public/assets/flowGraphCounterBlock-DTqShVsi.js.gz +0 -0
- package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js +0 -1
- package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js.br +0 -0
- package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js.gz +0 -0
- package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js +0 -1
- package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js.br +0 -0
- package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js.gz +0 -0
- package/public/assets/flowGraphDoNBlock-DfiUsh6W.js +0 -1
- package/public/assets/flowGraphDoNBlock-DfiUsh6W.js.br +0 -0
- package/public/assets/flowGraphDoNBlock-DfiUsh6W.js.gz +0 -0
- package/public/assets/flowGraphEasingBlock-BQz5MDh1.js +0 -1
- package/public/assets/flowGraphEasingBlock-BQz5MDh1.js.br +0 -0
- package/public/assets/flowGraphEasingBlock-BQz5MDh1.js.gz +0 -0
- package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js +0 -1
- package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js.br +0 -0
- package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js.gz +0 -0
- package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js +0 -1
- package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js.br +0 -0
- package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js.gz +0 -0
- package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js +0 -1
- package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js.br +0 -0
- package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js.gz +0 -0
- package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js +0 -1
- package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js.br +0 -0
- package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js.gz +0 -0
- package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js +0 -1
- package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js.br +0 -0
- package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js.gz +0 -0
- package/public/assets/flowGraphGetVariableBlock-ByAhPias.js +0 -1
- package/public/assets/flowGraphGetVariableBlock-ByAhPias.js.br +0 -0
- package/public/assets/flowGraphGetVariableBlock-ByAhPias.js.gz +0 -0
- package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js +0 -1
- package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js.br +0 -0
- package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js.gz +0 -0
- package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js +0 -1
- package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js.br +0 -0
- package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js.gz +0 -0
- package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js +0 -1
- package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js.br +0 -0
- package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js.gz +0 -0
- package/public/assets/flowGraphMathBlocks-DyKkUJIM.js +0 -1
- package/public/assets/flowGraphMathBlocks-DyKkUJIM.js.br +0 -0
- package/public/assets/flowGraphMathBlocks-DyKkUJIM.js.gz +0 -0
- package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js +0 -1
- package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js.br +0 -0
- package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js.gz +0 -0
- package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js +0 -1
- package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js.br +0 -0
- package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js.gz +0 -0
- package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js +0 -1
- package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js.br +0 -0
- package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js.gz +0 -0
- package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js +0 -1
- package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js.br +0 -0
- package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js.gz +0 -0
- package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js +0 -1
- package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js.br +0 -0
- package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js.gz +0 -0
- package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js +0 -1
- package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js.br +0 -0
- package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js.gz +0 -0
- package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js +0 -1
- package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js.br +0 -4
- package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js.gz +0 -0
- package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js +0 -1
- package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js.br +0 -0
- package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js.gz +0 -0
- package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js +0 -1
- package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js.br +0 -0
- package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js.gz +0 -0
- package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js +0 -1
- package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js.br +0 -0
- package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js.gz +0 -0
- package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js +0 -1
- package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js.br +0 -0
- package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js.gz +0 -0
- package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js +0 -1
- package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js.br +0 -0
- package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js.gz +0 -0
- package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js +0 -1
- package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js.br +0 -0
- package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js.gz +0 -0
- package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js +0 -1
- package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js.br +0 -0
- package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js.gz +0 -0
- package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js +0 -1
- package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js.br +0 -0
- package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js.gz +0 -0
- package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js +0 -1
- package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js.br +0 -0
- package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js.gz +0 -0
- package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js +0 -1
- package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js.br +0 -0
- package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js.gz +0 -0
- package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js +0 -1
- package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js.br +0 -0
- package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js.gz +0 -0
- package/public/assets/flowGraphThrottleBlock-DouJgya1.js +0 -1
- package/public/assets/flowGraphThrottleBlock-DouJgya1.js.br +0 -0
- package/public/assets/flowGraphThrottleBlock-DouJgya1.js.gz +0 -0
- package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js +0 -1
- package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js.br +0 -0
- package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js.gz +0 -0
- package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js +0 -1
- package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js.br +0 -4
- package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js.gz +0 -0
- package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js +0 -1
- package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js.br +0 -0
- package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js.gz +0 -0
- package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js +0 -1
- package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js.br +0 -0
- package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js.gz +0 -0
- package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js +0 -1
- package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js.br +0 -0
- package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js.gz +0 -0
- package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js +0 -1
- package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js.br +0 -0
- package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js.gz +0 -0
- package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js +0 -22
- package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js.br +0 -0
- package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js.gz +0 -0
- package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js +0 -23
- package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js.br +0 -0
- package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js.gz +0 -0
- package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js +0 -7
- package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js.br +0 -0
- package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js.gz +0 -0
- package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js +0 -7
- package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js.br +0 -0
- package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js.gz +0 -0
- package/public/assets/glowMapGeneration.fragment-BmCna86b.js +0 -63
- package/public/assets/glowMapGeneration.fragment-BmCna86b.js.br +0 -0
- package/public/assets/glowMapGeneration.fragment-BmCna86b.js.gz +0 -0
- package/public/assets/glowMapGeneration.fragment-Bx0somqR.js +0 -63
- package/public/assets/glowMapGeneration.fragment-Bx0somqR.js.br +0 -0
- package/public/assets/glowMapGeneration.fragment-Bx0somqR.js.gz +0 -0
- package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js +0 -75
- package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js.br +0 -0
- package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js.gz +0 -0
- package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js +0 -75
- package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js.br +0 -0
- package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js.gz +0 -0
- package/public/assets/glowMapMerge.fragment-0u_W2SCj.js +0 -25
- package/public/assets/glowMapMerge.fragment-0u_W2SCj.js.br +0 -0
- package/public/assets/glowMapMerge.fragment-0u_W2SCj.js.gz +0 -0
- package/public/assets/glowMapMerge.fragment-DbrUnHjm.js +0 -23
- package/public/assets/glowMapMerge.fragment-DbrUnHjm.js.br +0 -0
- package/public/assets/glowMapMerge.fragment-DbrUnHjm.js.gz +0 -0
- package/public/assets/glowMapMerge.vertex-CuTJKa7K.js +0 -7
- package/public/assets/glowMapMerge.vertex-CuTJKa7K.js.br +0 -0
- package/public/assets/glowMapMerge.vertex-CuTJKa7K.js.gz +0 -0
- package/public/assets/glowMapMerge.vertex-DAvXVsHl.js +0 -8
- package/public/assets/glowMapMerge.vertex-DAvXVsHl.js.br +0 -0
- package/public/assets/glowMapMerge.vertex-DAvXVsHl.js.gz +0 -0
- package/public/assets/grain.fragment-6VtM1VfQ.js +0 -6
- package/public/assets/grain.fragment-6VtM1VfQ.js.br +0 -0
- package/public/assets/grain.fragment-6VtM1VfQ.js.gz +0 -0
- package/public/assets/grain.fragment-DDSnqVVY.js +0 -5
- package/public/assets/grain.fragment-DDSnqVVY.js.br +0 -5
- package/public/assets/grain.fragment-DDSnqVVY.js.gz +0 -0
- package/public/assets/harmonicsFunctions-BKiAKdWL.js +0 -189
- package/public/assets/harmonicsFunctions-BKiAKdWL.js.br +0 -0
- package/public/assets/harmonicsFunctions-BKiAKdWL.js.gz +0 -0
- package/public/assets/harmonicsFunctions-BdFr0SEn.js +0 -192
- package/public/assets/harmonicsFunctions-BdFr0SEn.js.br +0 -0
- package/public/assets/harmonicsFunctions-BdFr0SEn.js.gz +0 -0
- package/public/assets/hdrTextureLoader-BZMtuzrh.js +0 -2
- package/public/assets/hdrTextureLoader-BZMtuzrh.js.br +0 -0
- package/public/assets/hdrTextureLoader-BZMtuzrh.js.gz +0 -0
- package/public/assets/hemisphericLight-BF-Si7a7.js +0 -1
- package/public/assets/hemisphericLight-BF-Si7a7.js.br +0 -0
- package/public/assets/hemisphericLight-BF-Si7a7.js.gz +0 -0
- package/public/assets/iesTextureLoader-CfjtMyLq.js +0 -2
- package/public/assets/iesTextureLoader-CfjtMyLq.js.br +0 -0
- package/public/assets/iesTextureLoader-CfjtMyLq.js.gz +0 -0
- package/public/assets/index-Bc_2vm3Z.js +0 -4
- package/public/assets/index-Bc_2vm3Z.js.br +0 -0
- package/public/assets/index-Bc_2vm3Z.js.gz +0 -0
- package/public/assets/index-DKM_mvsP.js +0 -1
- package/public/assets/index-DKM_mvsP.js.br +0 -0
- package/public/assets/index-DKM_mvsP.js.gz +0 -0
- package/public/assets/instancesDeclaration-DpE3Y0C1.js +0 -23
- package/public/assets/instancesDeclaration-DpE3Y0C1.js.br +0 -0
- package/public/assets/instancesDeclaration-DpE3Y0C1.js.gz +0 -0
- package/public/assets/ktxTextureLoader-7eTZtvh5.js +0 -1
- package/public/assets/ktxTextureLoader-7eTZtvh5.js.br +0 -0
- package/public/assets/ktxTextureLoader-7eTZtvh5.js.gz +0 -0
- package/public/assets/lazy-BcZCe0kL.js +0 -2
- package/public/assets/lazy-BcZCe0kL.js.br +0 -0
- package/public/assets/lazy-BcZCe0kL.js.gz +0 -0
- package/public/assets/lod.fragment-CEfFyCdU.js +0 -3
- package/public/assets/lod.fragment-CEfFyCdU.js.br +0 -0
- package/public/assets/lod.fragment-CEfFyCdU.js.gz +0 -0
- package/public/assets/lod.fragment-DT0r7jVm.js +0 -3
- package/public/assets/lod.fragment-DT0r7jVm.js.br +0 -0
- package/public/assets/lod.fragment-DT0r7jVm.js.gz +0 -0
- package/public/assets/lodCube.fragment-BP5e9OXG.js +0 -22
- package/public/assets/lodCube.fragment-BP5e9OXG.js.br +0 -0
- package/public/assets/lodCube.fragment-BP5e9OXG.js.gz +0 -0
- package/public/assets/lodCube.fragment-mh7W3FpN.js +0 -22
- package/public/assets/lodCube.fragment-mh7W3FpN.js.br +0 -0
- package/public/assets/lodCube.fragment-mh7W3FpN.js.gz +0 -0
- package/public/assets/logDepthDeclaration-DapB3ji1.js +0 -4
- package/public/assets/logDepthDeclaration-_-FceU2g.js +0 -4
- package/public/assets/logDepthFragment-BowlR5UY.js +0 -4
- package/public/assets/logDepthFragment-D1ov0i96.js +0 -4
- package/public/assets/logDepthFragment-D1ov0i96.js.br +0 -0
- package/public/assets/logDepthFragment-D1ov0i96.js.gz +0 -0
- package/public/assets/logDepthVertex-dEn2jB_d.js +0 -4
- package/public/assets/logDepthVertex-dEn2jB_d.js.br +0 -2
- package/public/assets/logDepthVertex-dEn2jB_d.js.gz +0 -0
- package/public/assets/logDepthVertex-jWY57236.js +0 -4
- package/public/assets/logDepthVertex-jWY57236.js.br +0 -3
- package/public/assets/logDepthVertex-jWY57236.js.gz +0 -0
- package/public/assets/mainUVVaryingDeclaration-B-lJcjME.js +0 -4
- package/public/assets/mainUVVaryingDeclaration-D1LMmumw.js +0 -4
- package/public/assets/meshUboDeclaration-B5FWJmqY.js +0 -13
- package/public/assets/meshUboDeclaration-B5FWJmqY.js.br +0 -1
- package/public/assets/meshUboDeclaration-B5FWJmqY.js.gz +0 -0
- package/public/assets/meshUboDeclaration-DthvNL2q.js +0 -13
- package/public/assets/meshUboDeclaration-DthvNL2q.js.br +0 -0
- package/public/assets/meshUboDeclaration-DthvNL2q.js.gz +0 -0
- package/public/assets/morphTargetsVertex-DHRA_mKb.js +0 -100
- package/public/assets/morphTargetsVertex-DHRA_mKb.js.br +0 -0
- package/public/assets/morphTargetsVertex-DHRA_mKb.js.gz +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js +0 -2
- package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js.br +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js.gz +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js +0 -3
- package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js.br +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js.gz +0 -0
- package/public/assets/oitFragment-CAXGfgFH.js +0 -1202
- package/public/assets/oitFragment-CAXGfgFH.js.br +0 -0
- package/public/assets/oitFragment-CAXGfgFH.js.gz +0 -0
- package/public/assets/oitFragment-ay081Wsi.js +0 -1077
- package/public/assets/oitFragment-ay081Wsi.js.br +0 -0
- package/public/assets/oitFragment-ay081Wsi.js.gz +0 -0
- package/public/assets/openpbrMaterial-KVtjwf0K.js +0 -2
- package/public/assets/openpbrMaterial-KVtjwf0K.js.br +0 -0
- package/public/assets/openpbrMaterial-KVtjwf0K.js.gz +0 -0
- package/public/assets/outline.fragment-BanVWYIB.js +0 -21
- package/public/assets/outline.fragment-BanVWYIB.js.br +0 -0
- package/public/assets/outline.fragment-BanVWYIB.js.gz +0 -0
- package/public/assets/outline.fragment-CFKJOJ3l.js +0 -18
- package/public/assets/outline.fragment-CFKJOJ3l.js.br +0 -0
- package/public/assets/outline.fragment-CFKJOJ3l.js.gz +0 -0
- package/public/assets/outline.vertex-1q1i1Z0k.js +0 -47
- package/public/assets/outline.vertex-1q1i1Z0k.js.br +0 -0
- package/public/assets/outline.vertex-1q1i1Z0k.js.gz +0 -0
- package/public/assets/outline.vertex-yrM712o1.js +0 -47
- package/public/assets/outline.vertex-yrM712o1.js.br +0 -0
- package/public/assets/outline.vertex-yrM712o1.js.gz +0 -0
- package/public/assets/passCube.fragment-4x9m1yB9.js +0 -23
- package/public/assets/passCube.fragment-4x9m1yB9.js.br +0 -0
- package/public/assets/passCube.fragment-4x9m1yB9.js.gz +0 -0
- package/public/assets/passCube.fragment-j0YEcfrM.js +0 -23
- package/public/assets/passCube.fragment-j0YEcfrM.js.br +0 -3
- package/public/assets/passCube.fragment-j0YEcfrM.js.gz +0 -0
- package/public/assets/pbr.fragment-D4c9Imut.js +0 -3277
- package/public/assets/pbr.fragment-D4c9Imut.js.br +0 -0
- package/public/assets/pbr.fragment-D4c9Imut.js.gz +0 -0
- package/public/assets/pbr.fragment-qKZeRSsL.js +0 -3327
- package/public/assets/pbr.fragment-qKZeRSsL.js.br +0 -0
- package/public/assets/pbr.fragment-qKZeRSsL.js.gz +0 -0
- package/public/assets/pbr.vertex-CNWuYREY.js +0 -227
- package/public/assets/pbr.vertex-CNWuYREY.js.br +0 -0
- package/public/assets/pbr.vertex-CNWuYREY.js.gz +0 -0
- package/public/assets/pbr.vertex-joJmxK7Z.js +0 -357
- package/public/assets/pbr.vertex-joJmxK7Z.js.br +0 -0
- package/public/assets/pbr.vertex-joJmxK7Z.js.gz +0 -0
- package/public/assets/playable-local-editor-entry-BpT9asOr.js +0 -4
- package/public/assets/playable-local-editor-entry-BpT9asOr.js.br +0 -0
- package/public/assets/playable-local-editor-entry-BpT9asOr.js.gz +0 -0
- package/public/assets/playable-sdk-CrJqCMfO.js +0 -5074
- package/public/assets/playable-sdk-CrJqCMfO.js.br +0 -0
- package/public/assets/playable-sdk-CrJqCMfO.js.gz +0 -0
- package/public/assets/rgbdDecode.fragment-DVQvgSkR.js +0 -5
- package/public/assets/rgbdDecode.fragment-DVQvgSkR.js.br +0 -0
- package/public/assets/rgbdDecode.fragment-DVQvgSkR.js.gz +0 -0
- package/public/assets/rgbdDecode.fragment-jfF24wPs.js +0 -5
- package/public/assets/rgbdDecode.fragment-jfF24wPs.js.br +0 -0
- package/public/assets/rgbdDecode.fragment-jfF24wPs.js.gz +0 -0
- package/public/assets/rgbdEncode.fragment-AWVgflWm.js +0 -5
- package/public/assets/rgbdEncode.fragment-AWVgflWm.js.br +0 -0
- package/public/assets/rgbdEncode.fragment-AWVgflWm.js.gz +0 -0
- package/public/assets/rgbdEncode.fragment-DZGlem9k.js +0 -5
- package/public/assets/rgbdEncode.fragment-DZGlem9k.js.br +0 -0
- package/public/assets/rgbdEncode.fragment-DZGlem9k.js.gz +0 -0
- package/public/assets/sceneLoader-BJz_3O1N.js +0 -1
- package/public/assets/sceneLoader-BJz_3O1N.js.br +0 -0
- package/public/assets/sceneLoader-BJz_3O1N.js.gz +0 -0
- package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js +0 -15
- package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js.br +0 -0
- package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js.gz +0 -0
- package/public/assets/selection.fragment-G8Edn4iI.js +0 -35
- package/public/assets/selection.fragment-G8Edn4iI.js.br +0 -0
- package/public/assets/selection.fragment-G8Edn4iI.js.gz +0 -0
- package/public/assets/selection.fragment-lxotM05-.js +0 -35
- package/public/assets/selection.fragment-lxotM05-.js.br +0 -0
- package/public/assets/selection.fragment-lxotM05-.js.gz +0 -0
- package/public/assets/selection.vertex-BXV_f7Y2.js +0 -74
- package/public/assets/selection.vertex-BXV_f7Y2.js.br +0 -0
- package/public/assets/selection.vertex-BXV_f7Y2.js.gz +0 -0
- package/public/assets/selection.vertex-N4uHCMNz.js +0 -73
- package/public/assets/selection.vertex-N4uHCMNz.js.br +0 -0
- package/public/assets/selection.vertex-N4uHCMNz.js.gz +0 -0
- package/public/assets/selectionOutline.fragment-GI37GIN9.js +0 -48
- package/public/assets/selectionOutline.fragment-GI37GIN9.js.br +0 -0
- package/public/assets/selectionOutline.fragment-GI37GIN9.js.gz +0 -0
- package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js +0 -47
- package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js.br +0 -0
- package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js.gz +0 -0
- package/public/assets/shadowMap.fragment-Bc5HgWvg.js +0 -79
- package/public/assets/shadowMap.fragment-Bc5HgWvg.js.br +0 -0
- package/public/assets/shadowMap.fragment-Bc5HgWvg.js.gz +0 -0
- package/public/assets/shadowMap.fragment-C43vlUxN.js +0 -78
- package/public/assets/shadowMap.fragment-C43vlUxN.js.br +0 -0
- package/public/assets/shadowMap.fragment-C43vlUxN.js.gz +0 -0
- package/public/assets/shadowMap.vertex-CneYEevu.js +0 -119
- package/public/assets/shadowMap.vertex-CneYEevu.js.br +0 -0
- package/public/assets/shadowMap.vertex-CneYEevu.js.gz +0 -0
- package/public/assets/shadowMap.vertex-DCmGPxPg.js +0 -109
- package/public/assets/shadowMap.vertex-DCmGPxPg.js.br +0 -0
- package/public/assets/shadowMap.vertex-DCmGPxPg.js.gz +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js +0 -4
- package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js.br +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js.gz +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js +0 -4
- package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js.br +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js.gz +0 -0
- package/public/assets/sharpen.fragment-u0Zk00IW.js +0 -8
- package/public/assets/sharpen.fragment-u0Zk00IW.js.br +0 -0
- package/public/assets/sharpen.fragment-u0Zk00IW.js.gz +0 -0
- package/public/assets/standardMaterial-CgDYhl-K.js +0 -1329
- package/public/assets/standardMaterial-CgDYhl-K.js.br +0 -0
- package/public/assets/standardMaterial-CgDYhl-K.js.gz +0 -0
- package/public/assets/textureMerger.fragment-Bb06oGwL.js +0 -84
- package/public/assets/textureMerger.fragment-Bb06oGwL.js.br +0 -0
- package/public/assets/textureMerger.fragment-Bb06oGwL.js.gz +0 -0
- package/public/assets/textureMerger.fragment-yYgn-A7X.js +0 -76
- package/public/assets/textureMerger.fragment-yYgn-A7X.js.br +0 -0
- package/public/assets/textureMerger.fragment-yYgn-A7X.js.gz +0 -0
- package/public/assets/tgaTextureLoader-BD8cHb3T.js +0 -1
- package/public/assets/tgaTextureLoader-BD8cHb3T.js.br +0 -0
- package/public/assets/tgaTextureLoader-BD8cHb3T.js.gz +0 -0
- package/public/assets/vertexColorMixing-31u6kp3A.js +0 -24
- package/public/assets/vertexColorMixing-31u6kp3A.js.br +0 -1
- package/public/assets/vertexColorMixing-31u6kp3A.js.gz +0 -0
- package/public/assets/vertexColorMixing-CWKPQGdm.js +0 -20
- package/public/assets/vertexColorMixing-CWKPQGdm.js.br +0 -0
- package/public/assets/vertexColorMixing-CWKPQGdm.js.gz +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js +0 -11
- package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js.br +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js.gz +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js +0 -12
- package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js.br +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js +0 -15
- package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js +0 -13
- package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js +0 -4
- package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js +0 -5
- package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js.gz +0 -0
- package/public/assets/webAudioBus-uR5af0TN.js +0 -1
- package/public/assets/webAudioBus-uR5af0TN.js.br +0 -0
- package/public/assets/webAudioBus-uR5af0TN.js.gz +0 -0
- package/public/assets/webAudioMainBus-B4JHk1VB.js +0 -1
- package/public/assets/webAudioMainBus-B4JHk1VB.js.br +0 -0
- package/public/assets/webAudioMainBus-B4JHk1VB.js.gz +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import cr from"node:fs/promises";import B from"node:path";import{pathToFileURL as Jc}from"node:url";var St=class extends Error{path;reason;code="runtime.lighting.invalid";constructor(t,n){super(`Invalid Runtime Lighting data at ${t}: ${n}`),this.path=t,this.reason=n,this.name="FpsRuntimeLightingDataError"}},fr=1e-6,jo=1e-4,Lo=new Set(["schemaVersion","type","intensity","direction","diffuseColor"]),Fo=new Set(["schemaVersion","type","intensity","diffuseColor","groundColor"]),Uo=new Set(["x","y","z"]),zo=new Set(["r","g","b"]);function Je(e,t="$.direction"){let n=mr(e,t),r=Math.hypot(n.x,n.y,n.z);return r<=fr&&X(t,"expected a non-zero direction vector"),Object.freeze({x:n.x/r,y:n.y/r,z:n.z/r})}function ve(e,t="$.light"){let n=rn(e,t);n.schemaVersion!==1&&X(`${t}.schemaVersion`,"expected 1");let r=Bo(n.intensity,`${t}.intensity`);if(n.type==="directional"){Et(n,Lo,t);let i=mr(n.direction,`${t}.direction`),o=Math.hypot(i.x,i.y,i.z);return o<=fr&&X(`${t}.direction`,"expected a non-zero direction vector"),Math.abs(o-1)>jo&&X(`${t}.direction`,"expected a normalized direction vector"),Object.freeze({schemaVersion:1,type:"directional",intensity:r,direction:i,diffuseColor:tn(n.diffuseColor,`${t}.diffuseColor`)})}if(n.type==="hemispheric")return Et(n,Fo,t),Object.freeze({schemaVersion:1,type:"hemispheric",intensity:r,diffuseColor:tn(n.diffuseColor,`${t}.diffuseColor`),groundColor:tn(n.groundColor,`${t}.groundColor`)});X(`${t}.type`,"expected directional or hemispheric")}function mr(e,t){let n=rn(e,t);return Et(n,Uo,t),Object.freeze({x:qe(n.x,`${t}.x`),y:qe(n.y,`${t}.y`),z:qe(n.z,`${t}.z`)})}function tn(e,t){let n=rn(e,t);return Et(n,zo,t),Object.freeze({r:nn(n.r,`${t}.r`),g:nn(n.g,`${t}.g`),b:nn(n.b,`${t}.b`)})}function rn(e,t){(!e||typeof e!="object"||Array.isArray(e))&&X(t,"expected a plain object");let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null&&X(t,"expected a plain object"),e}function Et(e,t,n){for(let r of Object.keys(e))t.has(r)||X(`${n}.${r}`,"unknown field")}function qe(e,t){return(typeof e!="number"||!Number.isFinite(e))&&X(t,"expected a finite number"),e}function Bo(e,t){let n=qe(e,t);return n<0&&X(t,"expected a non-negative number"),n}function nn(e,t){let n=qe(e,t);return(n<0||n>1)&&X(t,"expected a number between 0 and 1"),n}function X(e,t){throw new St(e,t)}var Xe="medium",on={low:{opacity:.32,softness:.25,bias:.0015,normalBias:.02,maxDistance:24,resolution:512,cascadeCount:1,bakeSamples:8,blurKernel:2},medium:{opacity:.42,softness:.4,bias:.001,normalBias:.01,maxDistance:48,resolution:1024,cascadeCount:2,bakeSamples:24,blurKernel:4},high:{opacity:.5,softness:.58,bias:8e-4,normalBias:.006,maxDistance:80,resolution:2048,cascadeCount:4,bakeSamples:64,blurKernel:8},ultra:{opacity:.56,softness:.72,bias:6e-4,normalBias:.004,maxDistance:120,resolution:4096,cascadeCount:4,bakeSamples:128,blurKernel:12}};function xt(e=Xe,t={}){let n=on[e]??on[Xe];return{opacity:Ye(t.opacity,n.opacity),softness:Ye(t.softness,n.softness),bias:Ye(t.bias,n.bias),normalBias:Ye(t.normalBias,n.normalBias),maxDistance:Ye(t.maxDistance,n.maxDistance),resolution:Ho(t.resolution,n.resolution),cascadeCount:Wo(t.cascadeCount,n.cascadeCount),bakeSamples:Vo(t.bakeSamples,n.bakeSamples),blurKernel:Ko(t.blurKernel,n.blurKernel)}}function Ye(e,t){return typeof e=="number"&&Number.isFinite(e)?e:t}function Vo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.round(e):t}function Ko(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.round(e):t}function Ho(e,t){return e===512||e===1024||e===2048||e===4096?e:t}function Wo(e,t){return e===1||e===2||e===4?e:t}function Pt(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function It(e){return e==="inherit"||e==="none"||e==="enabled"||e==="auto"}function At(e){return e==="inherit"||e==="none"||e==="enabled"||e==="auto"}function wt(e){return e==="inherit"||e==="none"||e==="dynamic"||e==="static"||e==="blob"||e==="projected"||e==="auto"}function Tt(e){return e==="inherit"||e==="low"||e==="medium"||e==="high"||e==="ultra"}function Dt(e){return e==="inherit"||e==="scene-main"||e==="nearest"||e==="explicit"}function gr(e){let t=Pt(e);if(!t)return;let n={};It(t.cast)&&(n.cast=t.cast),At(t.receive)&&(n.receive=t.receive),wt(t.mode)&&(n.mode=t.mode),Tt(t.quality)&&(n.quality=t.quality);let r=Pt(t.light);if(r){let o={};Dt(r.mode)&&(o.mode=r.mode),typeof r.lightId=="string"&&r.lightId.trim()&&(o.lightId=r.lightId.trim()),Object.keys(o).length>0&&(n.light=o)}let i=qo(t.params);return i&&(n.params=i),Object.keys(n).length>0?n:void 0}function re(e){let t=gr(e);return t?{shadow:t,diagnostics:[]}:{diagnostics:[]}}function an(e,t="none"){let n=e?.mode;return!n||n==="inherit"||n==="auto"?t:n}function sn(e,t=Xe){let n=e?.quality;return n&&n!=="inherit"?n:t}function ce(...e){let t={};for(let n of e)if(n){if((n.cast==="enabled"||n.cast==="none")&&(t.cast=n.cast),(n.receive==="enabled"||n.receive==="none")&&(t.receive=n.receive),n.mode!==void 0&&n.mode!=="inherit"&&(t.mode=n.mode),n.quality!==void 0&&n.quality!=="inherit"&&(t.quality=n.quality),n.light){let r={...t.light??{}};n.light.mode!==void 0&&n.light.mode!=="inherit"&&(r.mode=n.light.mode),n.light.lightId!==void 0&&(r.lightId=n.light.lightId),Object.keys(r).length>0&&(t.light=r)}n.params&&(t.params={...t.params??{},...n.params})}return Object.keys(t).length>0?t:void 0}function qo(e){let t=Pt(e);if(!t)return;let n={};return typeof t.opacity=="number"&&Number.isFinite(t.opacity)&&(n.opacity=t.opacity),typeof t.softness=="number"&&Number.isFinite(t.softness)&&(n.softness=t.softness),typeof t.bias=="number"&&Number.isFinite(t.bias)&&(n.bias=t.bias),typeof t.normalBias=="number"&&Number.isFinite(t.normalBias)&&(n.normalBias=t.normalBias),typeof t.maxDistance=="number"&&Number.isFinite(t.maxDistance)&&(n.maxDistance=t.maxDistance),(t.resolution===512||t.resolution===1024||t.resolution===2048||t.resolution===4096)&&(n.resolution=t.resolution),(t.cascadeCount===1||t.cascadeCount===2||t.cascadeCount===4)&&(n.cascadeCount=t.cascadeCount),typeof t.bakeSamples=="number"&&Number.isFinite(t.bakeSamples)&&(n.bakeSamples=t.bakeSamples),typeof t.blurKernel=="number"&&Number.isFinite(t.blurKernel)&&(n.blurKernel=t.blurKernel),Object.keys(n).length>0?n:void 0}var Jo=new Set(["cast","receive","mode","quality","light","params"]),Yo=new Set(["mode","lightId"]),Xo=new Set(["opacity","softness","bias","normalBias","maxDistance","resolution","cascadeCount","bakeSamples","blurKernel"]);function Ze(e,t="$.shadow"){let n=ln(e);if(!n)throw V("schema.invalidType",t);if(dn(n,Jo,t),"cast"in n&&!It(n.cast))throw V("schema.invalidValue",`${t}.cast`);if("receive"in n&&!At(n.receive))throw V("schema.invalidValue",`${t}.receive`);if("mode"in n&&!wt(n.mode))throw V("schema.invalidValue",`${t}.mode`);if("quality"in n&&!Tt(n.quality))throw V("schema.invalidValue",`${t}.quality`);"light"in n&&Zo(n.light,`${t}.light`),"params"in n&&Qo(n.params,`${t}.params`)}function Zo(e,t){let n=ln(e);if(!n)throw V("schema.invalidType",t);if(dn(n,Yo,t),"mode"in n&&!Dt(n.mode))throw V("schema.invalidValue",`${t}.mode`);if("lightId"in n&&(typeof n.lightId!="string"||!n.lightId.trim()))throw V("schema.invalidValue",`${t}.lightId`);if(n.mode==="explicit"&&(typeof n.lightId!="string"||!n.lightId.trim()))throw V("schema.invalidValue",`${t}.lightId`)}function Qo(e,t){let n=ln(e);if(!n)throw V("schema.invalidType",t);if(dn(n,Xo,t),Ae(n,"opacity",t,r=>r>=0&&r<=1),Ae(n,"softness",t,r=>r>=0),Ae(n,"bias",t,()=>!0),Ae(n,"normalBias",t,()=>!0),Ae(n,"maxDistance",t,r=>r>0),Ae(n,"bakeSamples",t,r=>r>0),Ae(n,"blurKernel",t,r=>r>=0),"resolution"in n&&![512,1024,2048,4096].includes(n.resolution))throw V("schema.invalidValue",`${t}.resolution`);if("cascadeCount"in n&&![1,2,4].includes(n.cascadeCount))throw V("schema.invalidValue",`${t}.cascadeCount`)}function Ae(e,t,n,r){if(!(t in e))return;let i=e[t];if(typeof i!="number"||!Number.isFinite(i)||!r(i))throw V("schema.invalidValue",`${n}.${t}`)}function dn(e,t,n){for(let r of Object.keys(e))if(!t.has(r))throw V("schema.deprecatedField",`${n}.${r}`)}function V(e,t){let n=new Error(`${e}: ${t}`);return Object.assign(n,{code:e,path:t}),n}function ln(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}var mn="fps.shadow-map-experiment";function gn(e,t="$.scene.shadowMapExperiment"){let n=Z(e,t);oe(n,["qualityProfile","behaviorProfile"],t),n.qualityProfile!==void 0&&ie(n.qualityProfile,`${t}.qualityProfile`),n.behaviorProfile!==void 0&&ie(n.behaviorProfile,`${t}.behaviorProfile`)}function tt(e,t="$.shadowMapExperiment"){let n=Z(e,t);oe(n,["behaviorProfile"],t),ie(n.behaviorProfile,`${t}.behaviorProfile`)}function ea(e,t="$"){let n=Z(e,t);oe(n,["schemaVersion","enabled","lightRef","defaultQualityProfile","defaultBehaviorProfile","qualityProfiles","behaviorProfiles"],t),n.schemaVersion!==1&&k(`${t}.schemaVersion`,"expected 1"),typeof n.enabled!="boolean"&&k(`${t}.enabled`,"expected boolean"),ie(n.lightRef,`${t}.lightRef`);let r=ie(n.defaultQualityProfile,`${t}.defaultQualityProfile`),i=ie(n.defaultBehaviorProfile,`${t}.defaultBehaviorProfile`),o=br(n.qualityProfiles,`${t}.qualityProfiles`),a=br(n.behaviorProfiles,`${t}.behaviorProfiles`);for(let[s,l]of Object.entries(o))na(l,`${t}.qualityProfiles.${s}`);for(let[s,l]of Object.entries(a))ra(l,`${t}.behaviorProfiles.${s}`);Object.prototype.hasOwnProperty.call(o,r)||k(`${t}.defaultQualityProfile`,`unknown quality profile: ${r}`),Object.prototype.hasOwnProperty.call(a,i)||k(`${t}.defaultBehaviorProfile`,`unknown behavior profile: ${i}`)}function yr(e){ea(e.config),e.settings!==void 0&&gn(e.settings),(!Number.isInteger(e.revision)||e.revision<0)&&k("$.revision","expected a non-negative integer");let t=e.settings?.qualityProfile??e.config.defaultQualityProfile,n=e.settings?.behaviorProfile??e.config.defaultBehaviorProfile,r=un(e.config.qualityProfiles,t,"$.settings.qualityProfile","quality");un(e.config.behaviorProfiles,n,"$.settings.behaviorProfile","behavior");let i=e.objects.map((s,l)=>{let d=`$.objects[${l}]`;s.override!==void 0&&tt(s.override,`${d}.override`);let u=s.override?.behaviorProfile??n,c=un(e.config.behaviorProfiles,u,`${d}.override.behaviorProfile`,"behavior");return Object.freeze({entityId:ie(s.entityId,`${d}.entityId`),renderableIds:Object.freeze(ua(s.renderableIds,`${d}.renderableIds`)),cast:pr(s.cast,`${d}.cast`)??c.cast==="enabled",receive:pr(s.receive,`${d}.receive`)??c.receive==="enabled",updateClass:c.updateClass!=="auto"?c.updateClass:s.inferredUpdateClass??"static",behaviorProfileId:u})}).sort((s,l)=>s.entityId.localeCompare(l.entityId)),o=e.config.enabled?i:[];la(o);let a=Object.fromEntries(Object.entries(e.config.behaviorProfiles).sort(([s],[l])=>s.localeCompare(l)).map(([s,l])=>[s,Object.freeze({cast:l.cast==="enabled",receive:l.receive==="enabled",updateClass:l.updateClass})]));return hr({schemaVersion:3,revision:e.revision,enabled:e.config.enabled,scopeId:ie(e.scopeId,"$.scopeId"),light:{entityId:e.config.lightRef,direction:et(e.lightDirection,"$.lightDirection")},qualityProfileId:t,generator:{maps:{...r.maps},...r.cascadeCount===void 0?{}:{cascadeCount:r.cascadeCount},filter:r.receiverFilter,bias:r.bias,normalBias:r.normalBias,darkness:r.darkness,...r.softness===void 0?{}:{softness:r.softness},bounds:ca(r.bounds),backend:{...r.backend}},culling:{...r.culling},diagnosticThresholds:{...r.diagnostics},behaviorProfiles:a,objects:o,diagnostics:[]})}function pr(e,t){if(e!==void 0)return typeof e!="boolean"&&k(t,"expected a boolean"),e}function ta(e,t){let n=Z(e,t);oe(n,["mode","center","extent","near","far"],t),n.mode!=="fixed"&&k(`${t}.mode`,"expected fixed"),et(n.center,`${t}.center`),et(n.extent,`${t}.extent`).some(a=>a<=0)&&k(`${t}.extent`,"expected positive values");let i=Mt(n.near,`${t}.near`),o=Mt(n.far,`${t}.far`);(i<0||o<=i)&&k(t,"expected 0 <= near < far")}function na(e,t){let n=Z(e,t);oe(n,["maps","cascadeCount","receiverFilter","bias","normalBias","darkness","softness","bounds","backend","culling","diagnostics"],t),ia(n.maps,`${t}.maps`),n.cascadeCount!==void 0&&oa(n.cascadeCount,`${t}.cascadeCount`),n.receiverFilter!=="hard"&&n.receiverFilter!=="low-pcf"&&k(`${t}.receiverFilter`,"expected hard or low-pcf"),Qe(n.bias,`${t}.bias`,0,.1),Qe(n.normalBias,`${t}.normalBias`,0,1),Qe(n.darkness,`${t}.darkness`,0,1),n.softness!==void 0&&Qe(n.softness,`${t}.softness`,0,1),ta(n.bounds,`${t}.bounds`),aa(n.backend,`${t}.backend`),sa(n.culling,`${t}.culling`),da(n.diagnostics,`${t}.diagnostics`)}function ra(e,t){let n=Z(e,t);oe(n,["cast","receive","updateClass"],t),n.cast!=="enabled"&&n.cast!=="disabled"&&k(`${t}.cast`,"expected enabled or disabled"),n.receive!=="enabled"&&n.receive!=="disabled"&&k(`${t}.receive`,"expected enabled or disabled"),["auto","static","dynamic","skinned"].includes(String(n.updateClass))||k(`${t}.updateClass`,"expected auto, static, dynamic, or skinned")}function ia(e,t){let n=Z(e,t);oe(n,["staticResolution","dynamicResolution","compositeResolution"],t),cn(n.staticResolution,`${t}.staticResolution`),cn(n.dynamicResolution,`${t}.dynamicResolution`),cn(n.compositeResolution,`${t}.compositeResolution`)}function cn(e,t){e!==512&&e!==1024&&e!==2048&&e!==4096&&k(t,"expected 512, 1024, 2048, or 4096")}function oa(e,t){e!==1&&e!==2&&e!==4&&k(t,"expected 1, 2, or 4")}function aa(e,t){let n=Z(e,t);oe(n,["mode","fallback"],t),["auto","split","single"].includes(String(n.mode))||k(`${t}.mode`,"expected auto, split, or single"),n.fallback!=="single-map"&&n.fallback!=="disable"&&k(`${t}.fallback`,"expected single-map or disable")}function sa(e,t){let n=Z(e,t);oe(n,["enabled","guardBandRatio"],t),typeof n.enabled!="boolean"&&k(`${t}.enabled`,"expected boolean"),Qe(n.guardBandRatio,`${t}.guardBandRatio`,0,4)}function da(e,t){let n=Z(e,t);oe(n,["staticCasterCountWarning","dynamicCasterCountWarning","renderableCountWarning"],t),fn(n.staticCasterCountWarning,`${t}.staticCasterCountWarning`),fn(n.dynamicCasterCountWarning,`${t}.dynamicCasterCountWarning`),fn(n.renderableCountWarning,`${t}.renderableCountWarning`)}function la(e){let t=new Set,n=new Set;for(let r of e){t.has(r.entityId)&&k("$.objects",`duplicate entity id: ${r.entityId}`),t.add(r.entityId);for(let i of r.renderableIds)n.has(i)&&k("$.objects",`duplicate renderable id: ${i}`),n.add(i)}}function br(e,t){let n=Z(e,t);Object.keys(n).length===0&&k(t,"expected at least one profile");for(let r of Object.keys(n))ie(r,`${t} key`);return n}function un(e,t,n,r){return Object.prototype.hasOwnProperty.call(e,t)||k(n,`unknown ${r} profile: ${t}`),e[t]}function ca(e){return Object.freeze({mode:"fixed",center:et(e.center,"$.bounds.center"),extent:et(e.extent,"$.bounds.extent"),near:e.near,far:e.far})}function et(e,t){let n=fa(e,t);return n.length!==3&&k(t,"expected exactly three numbers"),Object.freeze(n.map((r,i)=>Mt(r,`${t}[${i}]`)))}function ua(e,t){let n=e.map((r,i)=>ie(r,`${t}[${i}]`));return new Set(n).size!==n.length&&k(t,"expected unique strings"),n}function Mt(e,t){return(typeof e!="number"||!Number.isFinite(e))&&k(t,"expected a finite number"),e}function Qe(e,t,n,r){let i=Mt(e,t);return(i<n||i>r)&&k(t,`expected ${n}..${r}`),i}function fn(e,t){return(!Number.isInteger(e)||e<0)&&k(t,"expected a non-negative integer"),e}function ie(e,t){return(typeof e!="string"||!e.trim()||e!==e.trim())&&k(t,"expected a trimmed non-empty string"),e}function Z(e,t){(!e||typeof e!="object"||Array.isArray(e))&&k(t,"expected an object");let n=Object.getPrototypeOf(e);return n!==Object.prototype&&n!==null&&k(t,"expected a plain object"),e}function fa(e,t){return Array.isArray(e)||k(t,"expected an array"),e}function oe(e,t,n){let r=new Set(t);for(let i of Object.keys(e))r.has(i)||k(`${n}.${i}`,"unknown field")}function hr(e){if(!e||typeof e!="object"||Object.isFrozen(e))return e;for(let t of Object.values(e))hr(t);return Object.freeze(e)}function k(e,t){throw new Error(`shadow_map_experiment_invalid:${e}:${t}`)}var ma=new Set([".glb",".gltf",".png",".jpg",".jpeg",".webp",".env",".hdr",".dds",".ktx",".ktx2",".mp3",".wav",".ogg",".flac",".aac",".m4a"]);function pn(e){let t=String(e??"").trim().toLowerCase();if(/^\.[a-z0-9]+$/.test(t))return t;let n=t.split(/[?#]/,1)[0]??"",r=n.slice(n.lastIndexOf("/")+1),i=r.lastIndexOf(".");return i<=0||i===r.length-1?null:r.slice(i)}function bn(e){return ma.has(e)}function hn(e){return e==="fps.builtin.pbr"||e==="fps.builtin.standard"?e:void 0}function yn(e){if(!e||typeof e!="object")return;let t={};(e.lightingModel==="lit"||e.lightingModel==="unlit")&&(t.lightingModel=e.lightingModel);let n={},r=Sr(e.baseColor?.color);r&&(n.color=r);let i=we(e.baseColor?.texture);i!==void 0&&(n.texture=i),ue(e.baseColor,n,"brightness"),ue(e.baseColor,n,"saturation"),ue(e.baseColor,n,"contrast"),ue(e.baseColor,n,"hue"),Object.keys(n).length>0&&(t.baseColor=n);let o={},a=we(e.normal?.texture);a!==void 0&&(o.texture=a),ue(e.normal,o,"strength"),Object.keys(o).length>0&&(t.normal=o),_e(e.metallic)&&(t.metallic=e.metallic),_e(e.roughness)&&(t.roughness=e.roughness);let s={},l=we(e.metallicRoughness?.texture);l!==void 0&&(s.texture=l),Object.keys(s).length>0&&(t.metallicRoughness=s);let d={},u=we(e.occlusion?.texture);u!==void 0&&(d.texture=u),ue(e.occlusion,d,"strength"),Object.keys(d).length>0&&(t.occlusion=d);let c={},m=Sr(e.emission?.color);m&&(c.color=m),ue(e.emission,c,"intensity");let p=we(e.emission?.texture);p!==void 0&&(c.texture=p);let g=we(e.emission?.maskTexture);g!==void 0&&(c.maskTexture=g),Object.keys(c).length>0&&(t.emission=c);let b={};(e.alpha?.mode==="opaque"||e.alpha?.mode==="mask"||e.alpha?.mode==="blend")&&(b.mode=e.alpha.mode),ue(e.alpha,b,"opacity"),ue(e.alpha,b,"cutoff");let S=we(e.alpha?.texture);return S!==void 0&&(b.texture=S),Object.keys(b).length>0&&(t.alpha=b),Object.keys(t).length>0?t:void 0}function kt(...e){let t={};for(let n of e){let r=yn(n);r&&(r.lightingModel&&(t.lightingModel=r.lightingModel),Ge(t,r,"baseColor"),Ge(t,r,"normal"),r.metallic!==void 0&&(t.metallic=r.metallic),r.roughness!==void 0&&(t.roughness=r.roughness),Ge(t,r,"metallicRoughness"),Ge(t,r,"occlusion"),Ge(t,r,"emission"),Ge(t,r,"alpha"))}return yn(t)??{}}function Ge(e,t,n){let r=t[n];r&&Object.assign(e,{[n]:{...e[n]??{},...r}})}function Sr(e){return e&&_e(e.r)&&_e(e.g)&&_e(e.b)?{r:e.r,g:e.g,b:e.b}:void 0}function we(e){if(e===null)return null;if(!e||typeof e!="object")return;let t=typeof e.url=="string"?e.url.trim():"",n=typeof e.textureAssetId=="string"?e.textureAssetId.trim():"";if(!(!t&&!n))return{...t?{url:t}:{},...n?{textureAssetId:n}:{}}}function ue(e,t,n){_e(e?.[n])&&(t[n]=e[n])}function _e(e){return typeof e=="number"&&Number.isFinite(e)}function Er(e){let t=me(e);if(!t)return null;let n=L(t.sourceHash),r=L(t.lightHash),i=L(t.profileHash);if(!n||!r||!i)return null;let o={sourceHash:n,lightHash:r,profileHash:i,...typeof t.generatedAt=="string"&&t.generatedAt.trim()?{generatedAt:t.generatedAt.trim()}:{},...(()=>{let u=xa(t.stats);return u?{stats:u}:{}})()};if(t.version!==2||t.format!=="sdf-atlas"||!Array.isArray(t.pages)||!Array.isArray(t.chunks))return null;let a=[],s=new Map;for(let u of t.pages){let c=ga(u);if(!c||s.has(c.id))return null;a.push(c),s.set(c.id,c)}let l=[],d=new Set;for(let u of t.chunks){let c=pa(u,s);if(!c||d.has(c.id))return null;l.push(c),d.add(c.id)}return{version:2,format:"sdf-atlas",pages:a,chunks:l,...o}}function nt(e,t="$.staticShadows"){let n=Er(e);if(n)return n;let r=new Error(`schema.unsupportedVersion: ${t}`);throw Object.assign(r,{code:"schema.unsupportedVersion",path:t}),r}function ga(e){let t=me(e);if(!t)return null;let n=L(t.id),r=Ot(t.width),i=Ot(t.height),o=Pa(t.sdfTextureDataUrl);return!n||r==null||i==null||!o?null:{id:n,width:r,height:i,sdfTextureDataUrl:o}}function pa(e,t){let n=me(e);if(!n)return null;let r=L(n.id),i=Sa(n.bounds),o=Ea(n.plane),a=L(n.pageId),s=ya(n.atlasRect),l=ha(n.atlasUv),d=Ia(n.sourceNodeIds),u=L(n.sourceHash),c=L(n.lightHash),m=L(n.profileHash);if(!r||!i||!o||!a||!s||!l||!d||!u||!c||!m)return null;let p=t.get(a);return!p||s.x+s.width>p.width||s.y+s.height>p.height?null:{id:r,bounds:i,plane:o,pageId:a,atlasRect:s,atlasUv:l,sourceNodeIds:d,sourceHash:u,lightHash:c,profileHash:m,...(()=>{let g=ba(n.binding);return g?{binding:g}:{}})()}}function ba(e){let t=me(e);if(!t)return null;let n=L(t.id),r=L(t.ownerCasterId),i=L(t.receiverId),o=L(t.generatedAt),a=L(t.sourceHash);if(!n||!r||!i||!o||!a||t.visibleWhenOwnerVisible!==!0||t.staleWhenOwnerTransformChanges!==!0||t.staleWhenLightChanges!==!0)return null;let s=L(t.lightId),l=L(t.textureAssetId),d=L(t.projectionNodeId);return{id:n,ownerCasterId:r,receiverId:i,...s?{lightId:s}:{},...l?{textureAssetId:l}:{},...d?{projectionNodeId:d}:{},visibleWhenOwnerVisible:!0,staleWhenOwnerTransformChanges:!0,staleWhenLightChanges:!0,generatedAt:o,sourceHash:a}}function ya(e){let t=me(e);if(!t)return null;let n=ye(t.x),r=ye(t.y),i=Ot(t.width),o=Ot(t.height);return n==null||r==null||i==null||o==null?null:{x:n,y:r,width:i,height:o}}function ha(e){let t=me(e);if(!t)return null;let n=Ct(t.u0),r=Ct(t.v0),i=Ct(t.u1),o=Ct(t.v1);return n==null||r==null||i==null||o==null||i<=n||o<=r?null:{u0:n,v0:r,u1:i,v1:o}}function Sa(e){let t=me(e);if(!t)return null;let n=ae(t.minX),r=ae(t.maxX),i=ae(t.minZ),o=ae(t.maxZ),a=ae(t.y);return n==null||r==null||i==null||o==null||a==null||r<=n||o<=i?null:{minX:n,maxX:r,minZ:i,maxZ:o,y:a}}function Ea(e){let t=me(e);if(!t)return null;let n=ae(t.height),r=ae(t.yOffset);return n==null||r==null||r<0?null:{height:n,yOffset:r}}function xa(e){let t=me(e);if(!t)return null;let n=ye(t.sourceRootCount),r=ye(t.sourceMeshCount),i=ye(t.attemptedChunkCount),o=ye(t.chunkCount),a=ye(t.textureCount);return n==null||r==null||i==null||o==null||a==null?null:{sourceRootCount:n,sourceMeshCount:r,attemptedChunkCount:i,chunkCount:o,textureCount:a,...Rt(t.skippedChunkCount,"skippedChunkCount"),...Rt(t.pageCount,"pageCount"),...fe(t.resolution,"resolution"),...fe(t.chunkSize,"chunkSize"),...fe(t.atlasSize,"atlasSize"),...Nt(t.atlasUsedPixels,"atlasUsedPixels"),...Nt(t.atlasAllocatedPixels,"atlasAllocatedPixels"),...Aa(t.atlasOccupancy,"atlasOccupancy"),...fe(t.texelsPerMeter,"texelsPerMeter"),...fe(t.effectiveTexelsPerMeter,"effectiveTexelsPerMeter"),...fe(t.maxAtlasPages,"maxAtlasPages"),...Nt(t.sdfRadiusPx,"sdfRadiusPx"),...fe(t.spatialChunkSize,"spatialChunkSize"),...fe(t.effectiveSpatialChunkSize,"effectiveSpatialChunkSize"),...fe(t.targetChunkCount,"targetChunkCount"),...Rt(t.bakedChunkCount,"bakedChunkCount"),...Rt(t.reusedChunkCount,"reusedChunkCount"),...Nt(t.durationMs,"durationMs")}}function Pa(e){let t=L(e);return t&&/^data:image\/png[;,]/i.test(t)?t:null}function Ia(e){if(!Array.isArray(e)||e.length===0)return null;let t=[],n=new Set;for(let r of e){let i=L(r);if(!i)return null;n.has(i)||t.push(i),n.add(i)}return t}function L(e){return typeof e=="string"&&e.trim()?e.trim():null}function ae(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function ye(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}function Ot(e){return typeof e=="number"&&Number.isInteger(e)&&e>0?e:null}function Ct(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1?e:null}function Rt(e,t){let n=ye(e);return n==null?{}:{[t]:n}}function fe(e,t){let n=ae(e);return n==null||n<=0?{}:{[t]:n}}function Nt(e,t){let n=ae(e);return n==null||n<0?{}:{[t]:n}}function Aa(e,t){let n=ae(e);return n==null||n<0||n>1?{}:{[t]:n}}function me(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}var wa="@fps-games/editor.playable-sdk.scene-compiler",Ta="2",Da=1e-4,H={nodeKinds:["group","instance","transform","primitive","image"],primitiveShapes:["cube","sphere","plane","capsule"],transformTypes:["plain","light","camera","groundDecal"],assetTypes:["glb","texture"],materialScopes:["sharedAsset","nodeMaterial"],materialModes:["shared","instance"],materialShaderIds:["fps.builtin.pbr","fps.builtin.standard"],materialAssetSystemPresets:["default-pbr","default-standard"],runtimeV3:{assetFields:["id","guid","type","url","external","warmupCount","singleton","materialMode","defaults","materialSlots"],materialSlotFields:["slotId","label","sourceSurfaces"],materialSlotSourceSurfaceFields:["ownerNodePath","nodeIndex","nodeIndexPath","meshIndex","primitiveIndex","sourceMaterialIndex","sourceMeshName"]},hierarchy:{parentTargets:["root","sceneNode"]},runtimeOnlyTokens:["/@fs","assetUrl","sourceAssetUrl","sourceAssetPath"]},Ma=new Set(H.nodeKinds),ka=new Set(H.primitiveShapes),Ca=new Set(H.assetTypes),Ra=new Set(H.materialModes),Na=new Set(H.materialScopes),Oa=new Set(H.materialAssetSystemPresets),$a=new Set(H.transformTypes),rt=new Set(H.hierarchy.parentTargets),va=H.runtimeOnlyTokens,Ga=new Set(H.runtimeV3.assetFields),_a=new Set(H.runtimeV3.materialSlotFields),ja=new Set(H.runtimeV3.materialSlotSourceSurfaceFields);function La(e,t={}){let{allowOrphanSharedMaterials:n=!0,allowOrphanNodeMaterials:r=!0,strictAssetIds:i=[],strictNodeIds:o=[],maxErrors:a=50}=t,s=Number.isInteger(a)&&a>0?a:50,l=[],d=new Set(i),u=new Set(o),c=(f,v)=>{l.length<s&&l.push({path:f,message:v})};if(!E(e))return c("$","scene json must be an object"),l;let m=e.schemaVersion;m!==2&&m!==3&&c("$.schemaVersion","schemaVersion must be 2 or 3"),Ja(e.meta?.generatedFrom,"$.meta.generatedFrom",c);let p=is(e),g=e.scene;if(!E(g))return c("$.scene","scene must be an object"),l;if(P(g.rootId)||c("$.scene.rootId","rootId must be a non-empty string"),Array.isArray(g.assets)||c("$.scene.assets","assets must be an array"),Array.isArray(g.nodes)||c("$.scene.nodes","nodes must be an array"),Array.isArray(g.materialAssets)||c("$.scene.materialAssets","materialAssets must be an array"),Array.isArray(g.materials)||c("$.scene.materials","materials must be an array"),Array.isArray(g.textures)||c("$.scene.textures","textures must be an array"),l.length>0)return l;e.staticShadows!=null&&xr(()=>nt(e.staticShadows,"$.staticShadows"),"$.staticShadows",c);let b=new Set,S=new Map,x=new Map,D=new Set,w=new Set([g.rootId]),M=new Map,O=new Map,z=new Set;return g.assets.forEach((f,v)=>{let y=`$.scene.assets[${v}]`;if(!E(f)){c(y,"asset must be an object");return}if(P(f.id)?b.has(f.id)?c(`${y}.id`,`duplicate asset id: ${f.id}`):(b.add(f.id),S.set(f.id,f.type)):c(`${y}.id`,"asset.id must be a non-empty string"),Ca.has(f.type)||c(`${y}.type`,"asset.type must be glb or texture"),f.guid!=null&&!P(f.guid)&&c(`${y}.guid`,"asset.guid must be a non-empty string when present"),f.url!=null&&!P(f.url)&&c(`${y}.url`,"url must be a non-empty string when present"),f.external!=null&&!E(f.external)&&c(`${y}.external`,"external must be an object when present"),f.warmupCount!=null&&(!Number.isInteger(f.warmupCount)||f.warmupCount<0)&&c(`${y}.warmupCount`,"warmupCount must be a non-negative integer when present"),f.singleton!=null&&typeof f.singleton!="boolean"&&c(`${y}.singleton`,"singleton must be a boolean when present"),f.materialMode!=null&&!Ra.has(f.materialMode)&&c(`${y}.materialMode`,"materialMode must be shared or instance"),qa(f.defaults,`${y}.defaults`,c),m===3)for(let j of Object.keys(f))Ga.has(j)||c(`${y}.${j}`,`runtime schema v3 asset field is not allowed: ${j}`);else f.displayName!=null&&!P(f.displayName)&&c(`${y}.displayName`,"displayName must be a non-empty string when present"),f.category!=null&&!P(f.category)&&c(`${y}.category`,"category must be a non-empty string when present"),f.metadata!=null&&!E(f.metadata)&&c(`${y}.metadata`,"metadata must be an object when present");let G=m===3?f.materialSlots:E(f.metadata)?f.metadata.materialSlots:void 0,J=m===3?`${y}.materialSlots`:`${y}.metadata.materialSlots`,Y=new Set;G!=null&&(Array.isArray(G)?G.forEach((j,$e)=>{let Ie=`${J}[${$e}]`;if(!E(j)||!P(j.slotId)){c(Ie,m===3?"material slot must contain a stable slotId":"material slot must contain stable slotId and ownerNodePath");return}if(m!==3&&!P(j.ownerNodePath)){c(Ie,"material slot must contain stable slotId and ownerNodePath");return}Y.has(j.slotId)?c(`${Ie}.slotId`,`duplicate material slot id: ${j.slotId}`):Y.add(j.slotId),m===3&&Wa(j,Ie,c)}):c(J,"materialSlots must be an array when present")),P(f.id)&&x.set(f.id,Y),d.has(f.id)&&Ar(f,y,c)}),g.nodes.forEach((f,v)=>{let y=`$.scene.nodes[${v}]`;if(!E(f)){c(y,"node must be an object");return}P(f.id)&&M.set(f.id,f),P(f.id)?w.has(f.id)?c(`${y}.id`,`duplicate node id: ${f.id}`):(w.add(f.id),typeof f.kind=="string"&&O.set(f.id,f.kind),f.kind==="transform"&&Object.prototype.hasOwnProperty.call(f,"marker")&&z.add(f.id)):c(`${y}.id`,"node.id must be a non-empty string"),Ma.has(f.kind)||c(`${y}.kind`,"node.kind must be group, instance, transform, primitive, or image")}),g.materialAssets.forEach((f,v)=>{let y=`$.scene.materialAssets[${v}]`;if(!E(f)){c(y,"material asset must be an object");return}P(f.id)?D.has(f.id)?c(`${y}.id`,`duplicate material asset id: ${f.id}`):D.add(f.id):c(`${y}.id`,"material asset id must be a non-empty string"),f.name!=null&&!P(f.name)&&c(`${y}.name`,"material asset name must be a non-empty string when present"),f.guid!=null&&!P(f.guid)&&c(`${y}.guid`,"material asset guid must be a non-empty string when present"),Object.prototype.hasOwnProperty.call(f,"materialKind")&&c(`${y}.materialKind`,"materialKind is not supported; use shaderId"),Object.prototype.hasOwnProperty.call(f,"profile")&&c(`${y}.profile`,"profile is not supported; use properties"),hn(f.shaderId)||c(`${y}.shaderId`,"shaderId must be fps.builtin.pbr or fps.builtin.standard"),Dr(f.properties,`${y}.properties`,c);for(let G of Object.keys(f))["id","guid","name","shaderId","properties","system","origin"].includes(G)||c(`${y}.${G}`,`material asset field is not allowed: ${G}`);za(f.system,`${y}.system`,c),Ba(f.origin,`${y}.origin`,c),Va(f,y,c)}),g.nodes.forEach((f,v)=>{if(!E(f))return;let y=`$.scene.nodes[${v}]`,G=Object.prototype.hasOwnProperty.call(f,"parentId");G&&!P(f.parentId)&&c(`${y}.parentId`,"parentId must be a non-empty string when present");let J=G?f.parentId:g.rootId;P(J)&&Ka(J,g.rootId,w,`${y}.parentId`,c),P(f.id)&&Ha(f.id,g.rootId,M,`${y}.parentId`,c),Ya(f.source,`${y}.source`,c),kr(f.transform,`${y}.transform`,c),ps(f.rendering,`${y}.rendering`,c),f.shadow!=null&&xr(()=>Ze(f.shadow,`${y}.shadow`),`${y}.shadow`,c),Object.prototype.hasOwnProperty.call(f,"shadowMode")&&c(`${y}.shadowMode`,"deprecated field; use shadow.mode");let Y=null;f.kind==="instance"&&(E(f.instance)?b.has(f.instance.assetId)?S.get(f.instance.assetId)!=="glb"?c(`${y}.instance.assetId`,"instance.assetId must reference a glb asset"):Y=P(f.instance.assetId)?f.instance.assetId:null:c(`${y}.instance.assetId`,`assetId must reference scene.assets: ${f.instance.assetId}`):c(`${y}.instance`,"instance node must contain instance object")),f.kind==="primitive"&&(E(f.primitive)?ka.has(f.primitive.shape)||c(`${y}.primitive.shape`,"primitive.shape must be cube, sphere, plane, or capsule"):c(`${y}.primitive`,"primitive node must contain primitive object")),f.kind==="image"&&(E(f.image)?(b.has(f.image.assetId)?S.get(f.image.assetId)!=="texture"&&c(`${y}.image.assetId`,"image.assetId must reference a texture asset"):c(`${y}.image.assetId`,`assetId must reference scene.assets: ${f.image.assetId}`),E(f.image.size)?(Ir(f.image.size.width)||c(`${y}.image.size.width`,"image.size.width must be positive"),Ir(f.image.size.height)||c(`${y}.image.size.height`,"image.size.height must be positive")):c(`${y}.image.size`,"image.size must be an object")):c(`${y}.image`,"image node must contain image object")),f.kind==="transform"&&f.transformType!=null&&!$a.has(f.transformType)&&c(`${y}.transformType`,"transformType must be plain, light, camera, or groundDecal"),f.kind==="transform"&&f.transformType==="groundDecal"?ss(f.groundDecal,`${y}.groundDecal`,c):Object.prototype.hasOwnProperty.call(f,"groundDecal")&&c(`${y}.groundDecal`,"groundDecal is only allowed on transform nodes with transformType groundDecal"),f.kind==="transform"&&(rs(f.camera,`${y}.camera`,c),os(f.light,`${y}.light`,c,p)),Object.prototype.hasOwnProperty.call(f,"marker")&&(f.kind!=="transform"?c(`${y}.marker`,"marker is only allowed on transform nodes"):(Xa(f.marker,`${y}.marker`,c),Za(f.marker,f.id,w,z,`${y}.marker`,c))),(f.kind==="instance"||f.kind==="transform"||f.kind==="primitive"||f.kind==="image")&&Fa(f.overrides,`${y}.overrides`,D,Y?x.get(Y):void 0,m===3?"materialSlots":"metadata.materialSlots",c),u.has(f.id)&&Ar(f,y,c)}),g.materials.forEach((f,v)=>{let y=`$.scene.materials[${v}]`;if(!E(f)){c(y,"material must be an object");return}if(P(f.id)||c(`${y}.id`,"material.id must be a non-empty string"),f.scope!=null&&!Na.has(f.scope)&&c(`${y}.scope`,"material scope must be sharedAsset or nodeMaterial"),f.scope==="sharedAsset"&&(!P(f.assetId)||!b.has(f.assetId))&&!n&&c(`${y}.assetId`,`shared material assetId must reference scene.assets: ${f.assetId}`),f.scope==="nodeMaterial"){if((!P(f.nodeId)||!w.has(f.nodeId))&&!r)c(`${y}.nodeId`,`node material nodeId must reference scene.nodes: ${f.nodeId}`);else if(P(f.nodeId)&&w.has(f.nodeId)){let G=O.get(f.nodeId);G!=="instance"&&G!=="transform"&&G!=="primitive"&&c(`${y}.nodeId`,`node material nodeId must reference an instance, transform, or primitive node: ${f.nodeId}`)}}P(f.materialName)||c(`${y}.materialName`,"materialName must be a non-empty string"),E(f.properties)?Rr(f.properties,`${y}.properties`,c):c(`${y}.properties`,"properties must be an object")}),l}function wr(e,t={}){let n=La(e,t);return{ok:n.length===0,errors:n}}function xr(e,t,n){try{e()}catch(r){let i=typeof r?.path=="string"?r.path:t,o=typeof r?.code=="string"?r.code:"schema.invalidValue";n(i,o)}}function Fa(e,t,n,r,i,o){if(e!=null){if(!E(e)){o(t,"overrides must be an object when present");return}Tr(e.materialBinding,`${t}.materialBinding`,n,o),Ua(e.materialSlotBindings,`${t}.materialSlotBindings`,"slotId",n,r,i,o),Object.prototype.hasOwnProperty.call(e,"childMaterialBindings")&&o(`${t}.childMaterialBindings`,"deprecated field; use materialSlotBindings keyed by slotId"),Object.prototype.hasOwnProperty.call(e,"childMaterials")&&o(`${t}.childMaterials`,"deprecated field; use materialSlotBindings keyed by slotId")}}function Ua(e,t,n,r,i,o,a){if(e!=null){if(!E(e)){a(t,"material binding map must be an object when present");return}for(let[s,l]of Object.entries(e)){let d=`${t}.${s}`;P(s)||a(d,`${n} must be a non-empty string`),i?i.has(s)||a(d,`${n} must reference asset ${o}`):a(d,`${n} requires an instance asset with ${o}`),l==null?a(d,"material binding must be an object"):Tr(l,d,r,a)}}}function Tr(e,t,n,r){if(e!=null){if(!E(e)){r(t,"material binding must be an object when present");return}e.materialAssetId!=null&&(P(e.materialAssetId)?n.has(e.materialAssetId)||r(`${t}.materialAssetId`,`materialAssetId must reference scene.materialAssets: ${e.materialAssetId}`):r(`${t}.materialAssetId`,"materialAssetId must be non-empty when present")),e.override!=null&&Dr(e.override,`${t}.override`,r)}}function Dr(e,t,n){if(!E(e)){n(t,"material asset profile must be an object");return}if(e.lightingModel!=null&&e.lightingModel!=="lit"&&e.lightingModel!=="unlit"&&n(`${t}.lightingModel`,"lightingModel must be lit or unlit"),e.baseColor!=null)if(!E(e.baseColor))n(`${t}.baseColor`,"baseColor must be an object");else{$t(e.baseColor.color,`${t}.baseColor.color`,n),Te(e.baseColor.texture,`${t}.baseColor.texture`,n);for(let r of["brightness","saturation","contrast","hue"])e.baseColor[r]!=null&&!K(e.baseColor[r])&&n(`${t}.baseColor.${r}`,`${r} must be a finite number`)}for(let r of["metallic","roughness"])e[r]!=null&&!K(e[r])&&n(`${t}.${r}`,`${r} must be a finite number`);e.normal!=null&&(E(e.normal)?(Te(e.normal.texture,`${t}.normal.texture`,n),e.normal.strength!=null&&!K(e.normal.strength)&&n(`${t}.normal.strength`,"normal strength must be a finite number")):n(`${t}.normal`,"normal must be an object")),e.metallicRoughness!=null&&(E(e.metallicRoughness)?Te(e.metallicRoughness.texture,`${t}.metallicRoughness.texture`,n):n(`${t}.metallicRoughness`,"metallicRoughness must be an object")),e.occlusion!=null&&(E(e.occlusion)?(Te(e.occlusion.texture,`${t}.occlusion.texture`,n),e.occlusion.strength!=null&&!K(e.occlusion.strength)&&n(`${t}.occlusion.strength`,"occlusion strength must be a finite number")):n(`${t}.occlusion`,"occlusion must be an object")),e.emission!=null&&(E(e.emission)?($t(e.emission.color,`${t}.emission.color`,n),e.emission.intensity!=null&&!K(e.emission.intensity)&&n(`${t}.emission.intensity`,"emission intensity must be a finite number"),Te(e.emission.texture,`${t}.emission.texture`,n),Te(e.emission.maskTexture,`${t}.emission.maskTexture`,n)):n(`${t}.emission`,"emission must be an object")),e.alpha!=null&&(E(e.alpha)?(e.alpha.mode!=null&&e.alpha.mode!=="opaque"&&e.alpha.mode!=="mask"&&e.alpha.mode!=="blend"&&n(`${t}.alpha.mode`,"alpha mode must be opaque, mask, or blend"),e.alpha.opacity!=null&&!K(e.alpha.opacity)&&n(`${t}.alpha.opacity`,"alpha opacity must be a finite number"),e.alpha.cutoff!=null&&!K(e.alpha.cutoff)&&n(`${t}.alpha.cutoff`,"alpha cutoff must be a finite number"),Te(e.alpha.texture,`${t}.alpha.texture`,n)):n(`${t}.alpha`,"alpha must be an object"))}function Te(e,t,n){if(e!=null){if(!E(e)){n(t,"texture ref must be an object");return}e.url!=null&&!P(e.url)&&n(`${t}.url`,"texture url must be non-empty when present"),e.textureAssetId!=null&&!P(e.textureAssetId)&&n(`${t}.textureAssetId`,"textureAssetId must be non-empty when present")}}function za(e,t,n){if(e!=null){if(!E(e)){n(t,"material asset system must be an object");return}e.readonly!=null&&typeof e.readonly!="boolean"&&n(`${t}.readonly`,"readonly must be boolean"),e.preset!=null&&!Oa.has(e.preset)&&n(`${t}.preset`,"preset must be default-pbr or default-standard")}}function Ba(e,t,n){if(e!=null){if(!E(e)){n(t,"material asset origin must be an object");return}e.type!=="imported"&&e.type!=="created"&&e.type!=="duplicated"&&e.type!=="preset"&&n(`${t}.type`,"origin type must be imported, created, duplicated, or preset"),e.sourceAssetGuid!=null&&!P(e.sourceAssetGuid)&&n(`${t}.sourceAssetGuid`,"sourceAssetGuid must be non-empty when present"),e.sourceAssetId!=null&&!P(e.sourceAssetId)&&n(`${t}.sourceAssetId`,"sourceAssetId must be non-empty when present"),e.sourceSlotId!=null&&!P(e.sourceSlotId)&&n(`${t}.sourceSlotId`,"sourceSlotId must be non-empty when present"),e.sourceMaterialIndex!=null&&!Number.isInteger(e.sourceMaterialIndex)&&n(`${t}.sourceMaterialIndex`,"sourceMaterialIndex must be an integer when present"),e.sourceMaterialName!=null&&!P(e.sourceMaterialName)&&n(`${t}.sourceMaterialName`,"sourceMaterialName must be non-empty when present"),e.sourceMaterialAssetId!=null&&!P(e.sourceMaterialAssetId)&&n(`${t}.sourceMaterialAssetId`,"sourceMaterialAssetId must be non-empty when present")}}function Va(e,t,n){let r=E(e.system)?e.system.preset:void 0;r==="default-pbr"&&e.shaderId!=="fps.builtin.pbr"&&n(`${t}.shaderId`,"default-pbr material assets must use shaderId fps.builtin.pbr"),r==="default-standard"&&e.shaderId!=="fps.builtin.standard"&&n(`${t}.shaderId`,"default-standard material assets must use shaderId fps.builtin.standard")}function Ka(e,t,n,r,i){if(e===t){rt.has("root")||i(r,`parentId must point to scene node: ${e}`);return}if(rt.has("sceneNode")&&n.has(e))return;let o=rt.has("root")&&rt.has("sceneNode")?"root or scene node":rt.has("sceneNode")?"scene node":"root";i(r,`parentId must point to ${o}: ${e}`)}function Ha(e,t,n,r,i){if(!P(t))return;let o=new Set([e]),a=P(n.get(e)?.parentId)?n.get(e)?.parentId:t;for(;P(a)&&a!==t;){if(o.has(a)){i(r,`parentId creates a node cycle involving ${e}`);return}o.add(a);let s=n.get(a);if(!s)return;a=P(s.parentId)?s.parentId:t}}function Wa(e,t,n){for(let r of Object.keys(e))_a.has(r)||n(`${t}.${r}`,`runtime schema v3 material slot field is not allowed: ${r}`);if(e.label!=null&&!P(e.label)&&n(`${t}.label`,"label must be a non-empty string when present"),!Array.isArray(e.sourceSurfaces)||e.sourceSurfaces.length===0){n(`${t}.sourceSurfaces`,"sourceSurfaces must be a non-empty array");return}for(let r=0;r<e.sourceSurfaces.length;r+=1){let i=`${t}.sourceSurfaces[${r}]`,o=e.sourceSurfaces[r];if(!E(o)){n(i,"source surface must be an object");continue}for(let a of Object.keys(o))ja.has(a)||n(`${i}.${a}`,`runtime schema v3 material slot source surface field is not allowed: ${a}`);P(o.ownerNodePath)||n(`${i}.ownerNodePath`,"ownerNodePath must be a non-empty string");for(let a of["meshIndex","primitiveIndex"])(!Number.isInteger(o[a])||o[a]<0)&&n(`${i}.${a}`,`${a} must be a non-negative integer`);for(let a of["nodeIndex","sourceMaterialIndex"])o[a]!=null&&(!Number.isInteger(o[a])||o[a]<0)&&n(`${i}.${a}`,`${a} must be a non-negative integer when present`);o.nodeIndexPath!=null&&(!Array.isArray(o.nodeIndexPath)||o.nodeIndexPath.some(a=>!Number.isInteger(a)||a<0))&&n(`${i}.nodeIndexPath`,"nodeIndexPath must contain non-negative integers"),P(o.sourceMeshName)||n(`${i}.sourceMeshName`,"sourceMeshName is required")}}function qa(e,t,n){if(e!=null){if(!E(e)){n(t,"defaults must be an object");return}if(kr(e.transform,`${t}.transform`,n),Pr(e.outline,`${t}.outline`,n),e.childOutlines!=null)if(!E(e.childOutlines))n(`${t}.childOutlines`,"childOutlines must be an object");else for(let[r,i]of Object.entries(e.childOutlines))Pr(i,`${t}.childOutlines.${r}`,n)}}function Ja(e,t,n){if(e!=null){if(!E(e)){n(t,"generatedFrom must be an object when present");return}Mr(e,t,n),P(e.compilerId)||n(`${t}.compilerId`,"compilerId must be a non-empty string"),P(e.compilerVersion)||n(`${t}.compilerVersion`,"compilerVersion must be a non-empty string"),P(e.compiledAt)||n(`${t}.compiledAt`,"compiledAt must be a non-empty string")}}function Ya(e,t,n){if(e!=null){if(!E(e)){n(t,"source must be an object when present");return}Mr(e,t,n),e.objectGuid!=null&&!P(e.objectGuid)&&n(`${t}.objectGuid`,"objectGuid must be a non-empty string when present"),e.objectId!=null&&!P(e.objectId)&&n(`${t}.objectId`,"objectId must be a non-empty string when present"),e.component!=null&&!P(e.component)&&n(`${t}.component`,"component must be a non-empty string when present"),e.propertyPath!=null&&!P(e.propertyPath)&&n(`${t}.propertyPath`,"propertyPath must be a non-empty string when present")}}function Mr(e,t,n){P(e.sourceId)||n(`${t}.sourceId`,"sourceId must be a non-empty string"),P(e.sourceType)||n(`${t}.sourceType`,"sourceType must be a non-empty string"),e.revision!=null&&(typeof e.revision!="number"||!Number.isFinite(e.revision))&&n(`${t}.revision`,"revision must be a finite number when present")}function En(e,t){let n=wr(e,t);if(n.ok)return;let r=new Error(`scene_json_schema_failed:
|
|
3
|
+
${JSON.stringify(n.errors,null,2)}`);throw Object.assign(r,{code:"scene_json_schema_failed",diagnostics:n.errors}),r}function E(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function P(e){return typeof e=="string"&&e.trim().length>0}function kr(e,t,n){if(e!=null){if(!E(e)){n(t,"transform must be an object");return}se(e.position,`${t}.position`,n),se(e.rotation,`${t}.rotation`,n),se(e.rotationDeg,`${t}.rotationDeg`,n),typeof e.scale=="number"?Number.isFinite(e.scale)||n(`${t}.scale`,"scale number must be finite"):se(e.scale,`${t}.scale`,n)}}function Xa(e,t,n){if(!E(e)){n(t,"marker must be an object");return}he(e,["schemaVersion","label","type","kind","tags","note","color","target","semanticFrame","geometry","metadata"],t,n),e.schemaVersion!==1&&n(`${t}.schemaVersion`,"marker.schemaVersion must be 1"),P(e.label)||n(`${t}.label`,"marker.label must be a non-empty string"),P(e.type)||n(`${t}.type`,"marker.type must be a non-empty string"),e.kind!=null&&!P(e.kind)&&n(`${t}.kind`,"marker.kind must be a non-empty string when present"),e.tags!=null&&(Array.isArray(e.tags)?e.tags.forEach((r,i)=>{typeof r!="string"&&n(`${t}.tags[${i}]`,"marker tag must be a string")}):n(`${t}.tags`,"marker.tags must be an array when present")),e.note!=null&&typeof e.note!="string"&&n(`${t}.note`,"marker.note must be a string when present"),e.color!=null&&ts(e.color,`${t}.color`,n),e.target!=null&&Sn(e.target,`${t}.target`,n),e.semanticFrame!=null&&Qa(e.semanticFrame,`${t}.semanticFrame`,n),es(e.geometry,`${t}.geometry`,n),e.metadata!=null&&!E(e.metadata)&&n(`${t}.metadata`,"marker.metadata must be an object when present")}function Za(e,t,n,r,i,o){if(!E(e))return;let a=[];e.target!=null&&a.push({value:e.target,path:`${i}.target`}),E(e.geometry)&&e.geometry.target!=null&&a.push({value:e.geometry.target,path:`${i}.geometry.target`});for(let s of a)E(s.value)&&(s.value.kind!=="scene-object"&&s.value.kind!=="marker"&&o(`${s.path}.kind`,"runtime marker target kind must be scene-object or marker"),P(s.value.id)&&(s.value.id===t?o(`${s.path}.id`,"runtime marker target must not reference its marker node"):n.has(s.value.id)?s.value.kind==="marker"&&!r.has(s.value.id)?o(`${s.path}.id`,`runtime marker target must reference a marker node: ${s.value.id}`):s.value.kind==="scene-object"&&r.has(s.value.id)&&o(`${s.path}.id`,`runtime scene-object target must not reference a marker node: ${s.value.id}`):o(`${s.path}.id`,`runtime marker target must reference scene.nodes: ${s.value.id}`)))}function Sn(e,t,n){if(!E(e)){n(t,"marker target must be an object");return}he(e,["kind","id","label","path","metadata"],t,n),P(e.kind)||n(`${t}.kind`,"marker target kind must be a non-empty string"),P(e.id)||n(`${t}.id`,"marker target id must be a non-empty string");for(let r of["label","path"])e[r]!=null&&typeof e[r]!="string"&&n(`${t}.${r}`,`marker target ${r} must be a string when present`);e.metadata!=null&&!E(e.metadata)&&n(`${t}.metadata`,"marker target metadata must be an object when present")}function Qa(e,t,n){if(!E(e)){n(t,"marker semanticFrame must be an object");return}he(e,["origin","forward","right","up","label","description"],t,n),E(e.origin)?se(e.origin,`${t}.origin`,n):n(`${t}.origin`,"marker semanticFrame.origin must be a vector object");for(let r of["forward","right","up"])e[r]!=null&&se(e[r],`${t}.${r}`,n);for(let r of["label","description"])e[r]!=null&&typeof e[r]!="string"&&n(`${t}.${r}`,`marker semanticFrame ${r} must be a string when present`)}function es(e,t,n){if(!E(e)){n(t,"marker.geometry must be an object");return}if(e.kind==="box"){he(e,["kind"],t,n);return}if(e.kind==="point"){he(e,["kind","coordinateSpace","position","offset","target"],t,n),e.coordinateSpace!=null&&e.coordinateSpace!=="world"&&e.coordinateSpace!=="local"&&n(`${t}.coordinateSpace`,"point marker coordinateSpace must be world or local"),e.position!=null&&se(e.position,`${t}.position`,n),e.offset!=null&&se(e.offset,`${t}.offset`,n),e.target!=null&&Sn(e.target,`${t}.target`,n);return}if(e.kind==="object-bounds"){he(e,["kind","target"],t,n),Sn(e.target,`${t}.target`,n);return}if(e.kind==="polyhedron"){he(e,["kind","coordinateSpace","vertices","faces"],t,n),e.coordinateSpace!=null&&e.coordinateSpace!=="world"&&n(`${t}.coordinateSpace`,"polyhedron marker coordinateSpace must be world"),Array.isArray(e.vertices)?e.vertices.forEach((r,i)=>{let o=`${t}.vertices[${i}]`;E(r)?se(r,o,n):n(o,"polyhedron marker vertex must be a vector object")}):n(`${t}.vertices`,"polyhedron marker vertices must be an array"),e.faces!=null&&(Array.isArray(e.faces)?e.faces.forEach((r,i)=>{Array.isArray(r)?r.forEach((o,a)=>{(!Number.isInteger(o)||o<0)&&n(`${t}.faces[${i}][${a}]`,"polyhedron marker index must be a non-negative integer")}):n(`${t}.faces[${i}]`,"polyhedron marker face must be an array")}):n(`${t}.faces`,"polyhedron marker faces must be an array when present"));return}n(`${t}.kind`,"marker.geometry.kind must be box, point, object-bounds, or polyhedron")}function ts(e,t,n){if(!E(e)){n(t,"marker color must be an object");return}he(e,["r","g","b"],t,n);for(let r of["r","g","b"])Cr(e[r])||n(`${t}.${r}`,"marker color component must be between 0 and 1")}function he(e,t,n,r){let i=new Set(t);for(let o of Object.keys(e))i.has(o)||r(`${n}.${o}`,`field is not allowed: ${o}`)}function se(e,t,n){if(e!=null){if(!E(e)){n(t,"value must be a vector object");return}for(let r of["x","y","z"])(typeof e[r]!="number"||!Number.isFinite(e[r]))&&n(`${t}.${r}`,"vector component must be a finite number")}}function ns(e,t,n){if(e!=null){if(!E(e)){n(t,"value must be a vector object");return}for(let r of["x","y"])(typeof e[r]!="number"||!Number.isFinite(e[r]))&&n(`${t}.${r}`,"vector component must be a finite number")}}function K(e){return typeof e=="number"&&Number.isFinite(e)}function De(e){return K(e)&&e>0}function Cr(e){return K(e)&&e>=0&&e<=1}function $t(e,t,n){if(e!=null){if(!E(e)){n(t,"color must be an object");return}for(let r of["r","g","b"])(typeof e[r]!="number"||!Number.isFinite(e[r]))&&n(`${t}.${r}`,"color component must be a finite number")}}function rs(e,t,n){if(e!=null){if(!E(e)){n(t,"camera must be an object");return}e.projection!=null&&e.projection!=="orthographic"&&e.projection!=="perspective"&&n(`${t}.projection`,"camera projection must be orthographic or perspective");for(let r of["alpha","beta"])e[r]!=null&&!K(e[r])&&n(`${t}.${r}`,"camera property must be a finite number when present");for(let r of["radius","orthoSize"])e[r]!=null&&!De(e[r])&&n(`${t}.${r}`,"camera property must be a positive finite number when present");e.fov!=null&&!De(e.fov)&&n(`${t}.fov`,"camera fov must be a positive finite number"),se(e.targetOffset,`${t}.targetOffset`,n),ns(e.targetScreenOffset,`${t}.targetScreenOffset`,n);for(let r of["minZ","maxZ","lowerRadiusLimit","upperRadiusLimit"])e[r]!=null&&!De(e[r])&&n(`${t}.${r}`,"camera property must be a positive finite number");for(let r of["lowerBetaLimit","upperBetaLimit"])e[r]!=null&&!K(e[r])&&n(`${t}.${r}`,"camera property must be a finite number");e.inertia!=null&&!Cr(e.inertia)&&n(`${t}.inertia`,"camera inertia must be between 0 and 1"),De(e.minZ)&&De(e.maxZ)&&e.maxZ<=e.minZ&&n(`${t}.maxZ`,"camera maxZ must be greater than minZ"),K(e.lowerBetaLimit)&&K(e.upperBetaLimit)&&e.upperBetaLimit<e.lowerBetaLimit&&n(`${t}.upperBetaLimit`,"camera upperBetaLimit must be greater than or equal to lowerBetaLimit"),De(e.lowerRadiusLimit)&&De(e.upperRadiusLimit)&&e.upperRadiusLimit<e.lowerRadiusLimit&&n(`${t}.upperRadiusLimit`,"camera upperRadiusLimit must be greater than or equal to lowerRadiusLimit")}}function is(e){let t=e.meta?.generatedFrom;return E(t)&&t.compilerId===wa&&t.compilerVersion===Ta}function os(e,t,n,r=!1){if(e==null)return;let i=r&&E(e)&&!Object.prototype.hasOwnProperty.call(e,"schemaVersion")?as(e,t):e;try{ve(i,t)}catch(o){let a=o;n(typeof a.path=="string"?a.path:t,typeof a.reason=="string"?a.reason:typeof a.message=="string"?a.message:"light does not satisfy the Engine Runtime Light contract")}}function as(e,t){let n={...e,schemaVersion:1};if(e.type!=="directional"||!E(e.direction))return n;let{x:r,y:i,z:o}=e.direction;if(![r,i,o].every(s=>typeof s=="number"&&Number.isFinite(s)))return n;let a=Math.hypot(r,i,o);return a<=0||Math.abs(a-1)>Da?n:{...n,direction:Je(e.direction,`${t}.direction`)}}function Pr(e,t,n){if(e!=null){if(!E(e)){n(t,"outline must be an object");return}e.renderOutline!=null&&typeof e.renderOutline!="boolean"&&n(`${t}.renderOutline`,"renderOutline must be boolean"),e.outlineWidth!=null&&(typeof e.outlineWidth!="number"||!Number.isFinite(e.outlineWidth))&&n(`${t}.outlineWidth`,"outlineWidth must be a finite number"),$t(e.outlineColor,`${t}.outlineColor`,n)}}function ss(e,t,n){if(e==null){n(t,"groundDecal is required when transformType is groundDecal");return}if(!E(e)){n(t,"groundDecal must be an object");return}ds(e,t,n)}function ds(e,t,n){if(P(e.uiKind)||n(`${t}.uiKind`,"groundDecal UI kind must be non-empty"),!E(e.size))n(`${t}.size`,"groundDecal.size must be an object");else for(let r of["width","depth"])(typeof e.size[r]!="number"||!Number.isFinite(e.size[r])||e.size[r]<=0)&&n(`${t}.size.${r}`,"groundDecal size must be a positive finite number");if(e.aspectSourceLayerId!=null&&!P(e.aspectSourceLayerId)&&n(`${t}.aspectSourceLayerId`,"aspectSourceLayerId must be non-empty when present"),e.lockAspectToBorder!=null&&typeof e.lockAspectToBorder!="boolean"&&n(`${t}.lockAspectToBorder`,"lockAspectToBorder must be boolean when present"),e.editorPreviewActive!=null&&n(`${t}.editorPreviewActive`,"editorPreviewActive is editor-only and must not appear in runtime scene data"),ls(e.mask,`${t}.mask`,n),cs(e.rendering,`${t}.rendering`,n),!Array.isArray(e.layers)){n(`${t}.layers`,"groundDecal UI layers must be an array");return}e.layers.forEach((r,i)=>us(r,`${t}.layers[${i}]`,n)),fs(e.layers,`${t}.layers`,n)}function ls(e,t,n){if(e!=null){if(!E(e)){n(t,"groundDecal UI mask must be an object");return}e.enabled!=null&&typeof e.enabled!="boolean"&&n(`${t}.enabled`,"mask.enabled must be boolean"),e.source!=null&&e.source!=="roundedRect"&&e.source!=="borderAlpha"&&e.source!=="texture"&&n(`${t}.source`,"mask.source must be roundedRect, borderAlpha, or texture"),e.textureId!=null&&!P(e.textureId)&&n(`${t}.textureId`,"mask.textureId must be non-empty when present");for(let r of["cornerRadius","padding"])e[r]!=null&&(typeof e[r]!="number"||!Number.isFinite(e[r])||e[r]<0)&&n(`${t}.${r}`,`${r} must be a non-negative finite number`)}}function cs(e,t,n){if(e!=null){if(!E(e)){n(t,"groundDecal UI rendering must be an object");return}for(let r of["textureWidth","textureHeight"])e[r]!=null&&(!Number.isInteger(e[r])||e[r]<=0)&&n(`${t}.${r}`,`${r} must be a positive integer`);for(let r of["alphaIndex","diffuseTextureLevel","emissiveTextureLevel"])e[r]!=null&&(typeof e[r]!="number"||!Number.isFinite(e[r]))&&n(`${t}.${r}`,`${r} must be a finite number`)}}function us(e,t,n){if(!E(e)){n(t,"groundDecal UI layer must be an object");return}P(e.id)||n(`${t}.id`,"layer.id must be non-empty"),P(e.role)||n(`${t}.role`,"layer.role must be non-empty"),e.editorPreviewPercent!=null&&n(`${t}.editorPreviewPercent`,"editorPreviewPercent is editor-only and must not appear in runtime scene data"),e.enabled!=null&&typeof e.enabled!="boolean"&&n(`${t}.enabled`,"layer.enabled must be boolean"),(typeof e.zOrder!="number"||!Number.isFinite(e.zOrder))&&n(`${t}.zOrder`,"layer.zOrder must be a finite number"),e.opacity!=null&&(typeof e.opacity!="number"||!Number.isFinite(e.opacity))&&n(`${t}.opacity`,"layer.opacity must be finite"),e.rotationDeg!=null&&(typeof e.rotationDeg!="number"||!Number.isFinite(e.rotationDeg)||e.rotationDeg<=-180||e.rotationDeg>180)&&n(`${t}.rotationDeg`,"layer.rotationDeg must be in the range (-180, 180]"),ms(e.rect,`${t}.rect`,n),e.kind==="texture"?(e.textureId!=null&&!P(e.textureId)&&n(`${t}.textureId`,"texture layer textureId must be non-empty when present"),e.imageFit!=null&&e.imageFit!=="contain"&&e.imageFit!=="stretch"&&n(`${t}.imageFit`,"texture layer imageFit must be contain or stretch"),je(e.tint,`${t}.tint`,n)):e.kind==="textureProgress"?(e.textureId!=null&&!P(e.textureId)&&n(`${t}.textureId`,"texture progress layer textureId must be non-empty when present"),e.imageFit!=null&&e.imageFit!=="contain"&&e.imageFit!=="stretch"&&n(`${t}.imageFit`,"texture progress layer imageFit must be contain or stretch"),(typeof e.value!="number"||!Number.isFinite(e.value)||e.value<0||e.value>1)&&n(`${t}.value`,"texture progress value must be between 0 and 1"),e.direction!=null&&!["leftToRight","rightToLeft","bottomToTop","topToBottom"].includes(String(e.direction))&&n(`${t}.direction`,"texture progress direction is invalid"),je(e.tint,`${t}.tint`,n)):e.kind==="color"?je(e.color,`${t}.color`,n):e.kind==="progress"?((typeof e.value!="number"||!Number.isFinite(e.value)||e.value<0||e.value>1)&&n(`${t}.value`,"progress value must be between 0 and 1"),e.direction!=null&&!["leftToRight","rightToLeft","bottomToTop","topToBottom"].includes(String(e.direction))&&n(`${t}.direction`,"progress direction is invalid"),je(e.color,`${t}.color`,n)):e.kind==="text"?gs(e.text,`${t}.text`,n):n(`${t}.kind`,"layer.kind must be texture, textureProgress, color, progress, or text")}function fs(e,t,n){let r=new Map;e.forEach((i,o)=>{if(!E(i)||!P(i.id))return;let a=r.get(i.id);if(a!=null){n(`${t}[${o}].id`,`layer.id must be unique; duplicate of layers[${a}]`);return}r.set(i.id,o)})}function ms(e,t,n){if(!E(e)){n(t,"layer.rect must be an object");return}for(let r of["x","z","width","depth"])(typeof e[r]!="number"||!Number.isFinite(e[r]))&&n(`${t}.${r}`,`rect.${r} must be a finite number`);for(let r of["width","depth"])typeof e[r]=="number"&&e[r]<=0&&n(`${t}.${r}`,`rect.${r} must be positive`)}function gs(e,t,n){if(!E(e)){n(t,"text layer text must be an object");return}typeof e.value!="string"&&n(`${t}.value`,"text.value must be a string"),e.fontFamily!=null&&typeof e.fontFamily!="string"&&n(`${t}.fontFamily`,"fontFamily must be a string"),e.fontSize!=null&&(typeof e.fontSize!="number"||!Number.isFinite(e.fontSize)||e.fontSize<=0)&&n(`${t}.fontSize`,"fontSize must be a positive finite number"),e.fontWeight!=null&&typeof e.fontWeight!="string"&&n(`${t}.fontWeight`,"fontWeight must be a string"),je(e.color,`${t}.color`,n),je(e.strokeColor,`${t}.strokeColor`,n),e.strokeWidth!=null&&(typeof e.strokeWidth!="number"||!Number.isFinite(e.strokeWidth)||e.strokeWidth<0)&&n(`${t}.strokeWidth`,"strokeWidth must be a non-negative finite number")}function je(e,t,n){if(e!=null){if(!E(e)){n(t,"color must be an object");return}for(let r of["r","g","b"])(typeof e[r]!="number"||!Number.isFinite(e[r]))&&n(`${t}.${r}`,`color.${r} must be finite`);e.a!=null&&(typeof e.a!="number"||!Number.isFinite(e.a))&&n(`${t}.a`,"color.a must be finite")}}function ps(e,t,n){if(e!=null){if(!E(e)){n(t,"rendering must be an object");return}e.renderingGroupId!=null&&e.renderingGroupId!==0&&e.renderingGroupId!==1&&e.renderingGroupId!==2&&e.renderingGroupId!==3&&n(`${t}.renderingGroupId`,"renderingGroupId must be 0, 1, 2, or 3"),e.alphaIndex!=null&&(typeof e.alphaIndex!="number"||!Number.isFinite(e.alphaIndex))&&n(`${t}.alphaIndex`,"alphaIndex must be a finite number")}}function Ir(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Rr(e,t,n){for(let[r,i]of Object.entries(e)){let o=`${t}.${r}`;["albedoColor","diffuseColor","emissiveColor","outlineColor"].includes(r)&&$t(i,o,n),["metallic","roughness","contrast","brightness","saturation","hue","colorDensity","alpha","alphaCutOff","transparencyMode"].includes(r)&&(typeof i!="number"||!Number.isFinite(i))&&n(o,`${r} must be a finite number`),r==="backFaceCulling"&&typeof i!="boolean"&&n(o,"backFaceCulling must be boolean"),["albedoTexture","normalTexture","metallicTexture"].includes(r)&&(E(i)?i.url!=null&&!P(i.url)&&n(`${o}.url`,"texture url must be non-empty when present"):n(o,`${r} must be an object`)),["pbr","standard"].includes(r)&&(E(i)?Rr(i,o,n):n(o,`${r} must be an object`))}}function Ar(e,t,n){let r=JSON.stringify(e),i=va.filter(o=>r.includes(o));i.length>0&&n(t,`contains runtime-only asset fields: ${i.join(", ")}`)}function Or(e,t,n){let r=Nr(e)??512,i=Nr(t)??512;if(!Number.isFinite(n)||n<=0)return{width:r,height:i};let o=r,a=Math.max(1,Math.round(o/n));return a>i&&(a=i,o=Math.max(1,Math.round(a*n))),{width:o,height:a}}function xn(e){let t=e.rendering?.textureWidth??512,n=e.rendering?.textureHeight??512,r=e.size.width>0&&e.size.depth>0?e.size.width/e.size.depth:t/n;return Or(t,n,r)}function Nr(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?null:Math.max(64,Math.min(2048,Math.round(e)))}var Q=(e,t)=>({kind:"number",...e!=null?{min:e}:{},...t!=null?{max:t}:{}}),Me={kind:"texture"},$r={kind:"color"},bs={kind:"enum",values:["lit","unlit"]},ys={kind:"enum",values:["opaque","mask","blend"]},_r={lightingModel:bs,baseColor:{kind:"object",properties:{color:$r,texture:Me,brightness:Q(0),saturation:Q(0),contrast:Q(0),hue:Q(-180,180)}},normal:{kind:"object",properties:{texture:Me,strength:Q(0)}},emission:{kind:"object",properties:{color:$r,intensity:Q(0),texture:Me,maskTexture:Me}},alpha:{kind:"object",properties:{mode:ys,opacity:Q(0,1),cutoff:Q(0,1),texture:Me}}},hs={kind:"object",properties:{..._r,metallic:Q(0,1),roughness:Q(0,1),metallicRoughness:{kind:"object",properties:{texture:Me}},occlusion:{kind:"object",properties:{texture:Me,strength:Q(0)}}}},Ss={kind:"object",properties:_r},Es={lightingModel:"lit",baseColor:{color:{r:1,g:1,b:1},brightness:1,saturation:1,contrast:1,hue:0},metallic:0,roughness:1,emission:{color:{r:0,g:0,b:0},intensity:0}},xs={lightingModel:"lit",baseColor:{color:{r:1,g:1,b:1},brightness:1,saturation:1,contrast:1,hue:0},emission:{color:{r:0,g:0,b:0},intensity:0}},vr=[{id:"surface",title:"Surface",order:40},{id:"geometry",title:"Geometry",order:50},{id:"emission",title:"Emission",order:60},{id:"alpha",title:"Alpha",order:70}],ke={path:"properties.lightingModel",operator:"equals",value:"lit",inactiveReasonKey:"litMaterial"},jr=[Fe("properties.lightingModel","surface",1,"enum","assetLightingModel","lightingModel","lit",{options:[{value:"lit",labelKey:"assetLightingModelLit"},{value:"unlit",labelKey:"assetLightingModelUnlit"}],binding:"lightingModel",updateClass:"define"}),Fe("properties.baseColor.color","surface",2,"color","assetBaseColor","baseColor",{r:1,g:1,b:1},{binding:"baseColor.color"}),Ue("properties.baseColor.texture.textureAssetId","properties.baseColor.texture","surface",3,"assetBaseTexture","baseTexture","baseColor.texture"),ee("properties.baseColor.brightness","surface",4,"assetBrightness","brightness",1,{softMin:0,softMax:4,step:.05,conditions:[Le("properties.baseColor.texture.textureAssetId","baseTexture")]}),ee("properties.baseColor.saturation","surface",5,"assetSaturation","saturation",1,{softMin:0,softMax:2,step:.05,conditions:[Le("properties.baseColor.texture.textureAssetId","baseTexture")]}),ee("properties.baseColor.contrast","surface",6,"assetContrast","contrast",1,{softMin:0,softMax:2,step:.05,conditions:[Le("properties.baseColor.texture.textureAssetId","baseTexture")]}),ee("properties.baseColor.hue","surface",7,"assetHue","hue",0,{step:1,conditions:[Le("properties.baseColor.texture.textureAssetId","baseTexture")]}),Ue("properties.normal.texture.textureAssetId","properties.normal.texture","geometry",10,"assetNormalTexture","normalTexture","normal.texture",[ke]),ee("properties.normal.strength","geometry",11,"assetNormalStrength","normalStrength",1,{softMin:0,softMax:4,step:.05,conditions:[ke,Le("properties.normal.texture.textureAssetId","normalTexture")]}),Fe("properties.emission.color","emission",50,"color","assetEmissionColor","emissionColor",{r:0,g:0,b:0},{binding:"emission.color"}),ee("properties.emission.intensity","emission",51,"assetEmissionIntensity","emissionIntensity",0,{softMin:0,softMax:8,step:.05}),Ue("properties.emission.texture.textureAssetId","properties.emission.texture","emission",52,"assetEmissionTexture","emissionTexture","emission.texture"),Fe("properties.alpha.mode","alpha",60,"enum","assetAlphaMode","alphaMode","opaque",{options:[{value:"opaque",labelKey:"assetAlphaModeOpaque"},{value:"mask",labelKey:"assetAlphaModeMask"},{value:"blend",labelKey:"assetAlphaModeBlend"}],binding:"alpha.mode",updateClass:"pipeline"}),ee("properties.alpha.opacity","alpha",61,"assetAlphaOpacity","alphaOpacity",1,{step:.05,conditions:[{path:"properties.alpha.mode",operator:"equals",value:"blend",inactiveReasonKey:"alphaBlend"}]}),ee("properties.alpha.cutoff","alpha",62,"assetAlphaCutoff","alphaCutoff",.5,{step:.01,conditions:[{path:"properties.alpha.mode",operator:"equals",value:"mask",inactiveReasonKey:"alphaMask"}]}),Ue("properties.alpha.texture.textureAssetId","properties.alpha.texture","alpha",63,"assetAlphaTexture","alphaTexture","alpha.texture",[{path:"properties.alpha.mode",operator:"not-equals",value:"opaque",inactiveReasonKey:"alphaTransparency"}])],Ps=[...jr,ee("properties.metallic","geometry",20,"assetMetallic","metallic",0,{step:.05,conditions:[ke]}),ee("properties.roughness","geometry",21,"assetRoughness","roughness",1,{step:.05,conditions:[ke]}),Ue("properties.metallicRoughness.texture.textureAssetId","properties.metallicRoughness.texture","geometry",22,"assetMetallicRoughnessTexture","metallicRoughnessTexture","metallicRoughness.texture",[ke]),Ue("properties.occlusion.texture.textureAssetId","properties.occlusion.texture","geometry",23,"assetOcclusionTexture","occlusionTexture","occlusion.texture",[ke]),ee("properties.occlusion.strength","geometry",24,"assetOcclusionStrength","occlusionStrength",1,{softMin:0,softMax:4,step:.05,conditions:[ke,Le("properties.occlusion.texture.textureAssetId","occlusionTexture")]})],Is=[{shaderId:"fps.builtin.pbr",version:1,runtimeKind:"pbr",displayName:"PBR",propertiesSchema:hs,defaultProperties:Es,inspector:{sections:vr,fields:Ps}},{shaderId:"fps.builtin.standard",version:1,runtimeKind:"standard",displayName:"Standard",propertiesSchema:Ss,defaultProperties:xs,inspector:{sections:vr,fields:jr}}],Lr=As(Is);function As(e){let t=new Map;for(let r of e){ws(r,t);let i=Ts(r);t.set(r.shaderId,Kr(i))}let n=Object.freeze([...t.values()]);return Object.freeze({get(r){return typeof r=="string"?t.get(r)??null:null},list(){return n}})}function Fr(e,t=Lr){return t.get(e)}function Ur(e){return Fr(e)}function zr(e,t,n="properties",r=Lr){let i=Fr(e,r);if(!i)return[{path:"shaderId",message:`Unknown material shader: ${String(e)}`}];let o=[];return In(i.propertiesSchema,t,n,o),o}function Fe(e,t,n,r,i,o,a,s){return{path:e,sectionId:t,order:n,control:r,labelKey:i,tooltipKey:o,defaultValue:a,updateClass:"uniform",...s}}function ee(e,t,n,r,i,o,a={}){return Fe(e,t,n,"number",r,i,o,{binding:e.replace(/^properties\./,""),step:a.step??.05,displayPrecision:2,precision:2,...a})}function Ue(e,t,n,r,i,o,a,s){return Fe(e,n,r,"texture",i,o,"",{schemaPath:t,binding:a,updateClass:"texture",conditions:s})}function Le(e,t){return{path:e,operator:"truthy",inactiveReasonKey:t}}function ws(e,t){if(!e.shaderId.trim())throw new Error("Material Shader Definition shaderId must not be empty.");if(!Number.isInteger(e.version)||e.version<=0)throw new Error(`Material Shader Definition ${e.shaderId} must use a positive integer version.`);if(t.has(e.shaderId))throw new Error(`Duplicate Material Shader Definition: ${e.shaderId}`);if(e.sourceFile!=null&&!Ms(e.sourceFile))throw new Error(`Material Shader Definition ${e.shaderId} sourceFile must be a safe project-relative path.`);Br(e.shaderId,e.propertiesSchema,"properties");let n=[];if(In(e.propertiesSchema,e.defaultProperties,"properties",n),n.length>0){let o=n[0];throw new Error(`Material Shader Definition ${e.shaderId} default ${o.path} ${o.message}.`)}let r=new Set;for(let o of e.inspector.sections){if(!o.id.trim()||r.has(o.id))throw new Error(`Material Shader Definition ${e.shaderId} contains an invalid or duplicate section: ${o.id}`);r.add(o.id)}let i=new Set;for(let o of e.inspector.fields){if(!o.path.startsWith("properties.")||i.has(o.path))throw new Error(`Material Shader Definition ${e.shaderId} contains an invalid or duplicate field: ${o.path}`);if(!r.has(o.sectionId))throw new Error(`Material Shader Definition ${e.shaderId} field ${o.path} references an unknown section.`);Ds(e,o),i.add(o.path)}}function Ts(e){let t=structuredClone(e);return{...t,inspector:{...t.inspector,fields:t.inspector.fields.map(n=>{if(n.control!=="number")return n;let r=Vr(t.propertiesSchema,n.schemaPath??n.path);return r?.kind!=="number"?n:{...n,...r.min!=null?{min:r.min}:{},...r.max!=null?{max:r.max}:{}}})}}}function Ds(e,t){let n=[["min",t.min],["max",t.max],["softMin",t.softMin],["softMax",t.softMax]];for(let[i,o]of n)if(o!=null&&!Number.isFinite(o))throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} ${i} must be finite.`);if(t.control!=="number"){if(n.some(([,i])=>i!=null))throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} uses numeric ranges with a non-number control.`);return}let r=Vr(e.propertiesSchema,t.schemaPath??t.path);if(r?.kind!=="number")throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} must reference a number schema.`);for(let[i,o,a]of[["min",t.min,r.min],["max",t.max,r.max]])if(o!=null&&o!==a)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} ${i} must match propertiesSchema.`);if(t.softMin!=null&&t.softMax!=null&&t.softMin>t.softMax)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMin must not exceed softMax.`);if(r.min!=null&&t.softMin!=null&&t.softMin<r.min)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMin must not be below the schema minimum.`);if(r.max!=null&&t.softMax!=null&&t.softMax>r.max)throw new Error(`Material Shader Definition ${e.shaderId} field ${t.path} softMax must not exceed the schema maximum.`)}function Br(e,t,n){if(t.kind==="object"){for(let[r,i]of Object.entries(t.properties))Br(e,i,`${n}.${r}`);return}if(t.kind==="number"){if(t.min!=null&&!Number.isFinite(t.min))throw new Error(`Material Shader Definition ${e} number field ${n} min must be finite.`);if(t.max!=null&&!Number.isFinite(t.max))throw new Error(`Material Shader Definition ${e} number field ${n} max must be finite.`);if(t.min!=null&&t.max!=null&&t.min>t.max)throw new Error(`Material Shader Definition ${e} number field ${n} min must not exceed max.`);return}if(t.kind==="color"&&t.channels!=null&&t.channels!==3&&t.channels!==4)throw new Error(`Material Shader Definition ${e} color field ${n} channels must be 3 or 4.`)}function Ms(e){let t=e.trim();return!t||t.startsWith("/")||t.includes("\\")||t.includes(":")?!1:!t.split("/").includes("..")}function ks(e){let t=e.trim();return t.startsWith("properties.")?t:`properties.${t}`}function Vr(e,t){let n=ks(t).replace(/^properties\./,"").split(".").filter(Boolean);if(n.length===0)return null;let r=e;for(let i of n){if(r.kind!=="object")return null;let o=r.properties[i];if(!o)return null;r=o}return r}function In(e,t,n,r){if(e.kind==="object"){if(!Pn(t)){r.push({path:n,message:"must be an object"});return}for(let o of Object.keys(t))Object.prototype.hasOwnProperty.call(e.properties,o)||r.push({path:`${n}.${o}`,message:"is not supported by the selected shader"});for(let[o,a]of Object.entries(e.properties))t[o]!==void 0&&In(a,t[o],`${n}.${o}`,r);return}if(e.kind==="number"){if(typeof t!="number"||!Number.isFinite(t)){r.push({path:n,message:"must be a finite number"});return}e.min!=null&&t<e.min&&r.push({path:n,message:`must be greater than or equal to ${e.min}`}),e.max!=null&&t>e.max&&r.push({path:n,message:`must be less than or equal to ${e.max}`});return}if(e.kind==="boolean"){typeof t!="boolean"&&r.push({path:n,message:"must be a boolean"});return}if(e.kind==="string"){t!==null&&typeof t!="string"?r.push({path:n,message:"must be a string"}):t===null&&!e.nullable&&r.push({path:n,message:"must not be null"});return}if(e.kind==="enum"){(typeof t!="string"||!e.values.includes(t))&&r.push({path:n,message:`must be one of: ${e.values.join(", ")}`});return}if(e.kind==="color"){let o=e.channels===4?["r","g","b","a"]:["r","g","b"];Gr(t,n,o,r,e.channels===4?"an RGBA object":"an RGB object");return}if(e.kind==="vec2"||e.kind==="vec3"){Gr(t,n,e.kind==="vec2"?["x","y"]:["x","y","z"],r,`a ${e.kind} object`);return}if(t===null)return;if(!Pn(t)){r.push({path:n,message:"must be a texture reference object or null"});return}Object.keys(t).some(o=>o!=="url"&&o!=="textureAssetId")&&r.push({path:n,message:"must contain only url or textureAssetId"});for(let o of["url","textureAssetId"]){let a=t[o];a!==void 0&&(typeof a!="string"||!a.trim())&&r.push({path:`${n}.${o}`,message:"must be a non-empty string"})}}function Gr(e,t,n,r,i){if(!Pn(e)){r.push({path:t,message:`must be ${i}`});return}Object.keys(e).some(o=>!n.includes(o))&&r.push({path:t,message:`must contain only ${n.join(", ")}`});for(let o of n)(typeof e[o]!="number"||!Number.isFinite(e[o]))&&r.push({path:`${t}.${o}`,message:"must be a finite number"})}function Kr(e){if(e&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.values(e))Kr(t)}return e}function Pn(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Hr(e){return e.trim().replace(/^\/+|\/+$/g,"")}function Cs(e){let t=[],n=new Map(e.assets.map(r=>[r.id,r]));for(let r of e.scene.gameObjects){let i=Us(r),o=vt(r.overrides?.materialBinding);o&&t.push({kind:"root",scope:"scene",gameObjectId:r.id,gameObjectName:r.name,materialAssetId:o,bindingPath:"overrides.materialBinding.materialAssetId",label:i});let a=Rs(e,r,n),s=new Map(a.filter(d=>!!d.slotId).map(d=>[d.slotId,d])),l=r.overrides?.materialSlotBindings??{};for(let[d,u]of Object.entries(l)){let c=vt(u);if(!c)continue;let m=s.get(d),p=zs(m,d);t.push({kind:"slot",scope:"scene",gameObjectId:r.id,gameObjectName:r.name,materialAssetId:c,bindingPath:`overrides.materialSlotBindings.${d}.materialAssetId`,label:`${i} / ${p}`,slotId:d,ownerNodePath:Jr(m)??d})}}for(let r of e.assets)if(!(r.type!=="prefab"||!r.prefab)){Wr(t,{ownerId:r.id,ownerName:r.displayName??r.id,prefabAssetId:r.id,path:`assets.${r.id}.prefab.overrides`,overrides:r.prefab.overrides});for(let i of r.prefab.nodes??[])Wr(t,{ownerId:`${r.id}:${i.id}`,ownerName:`${r.displayName??r.id} / ${i.name??i.id}`,prefabAssetId:r.id,prefabNodeId:i.id,path:`assets.${r.id}.prefab.nodes.${i.id}.overrides`,overrides:i.overrides})}return t}function Wr(e,t){let n=vt(t.overrides?.materialBinding);n&&e.push({kind:"root",scope:"prefab",gameObjectId:t.ownerId,gameObjectName:t.ownerName,materialAssetId:n,bindingPath:`${t.path}.materialBinding.materialAssetId`,label:t.ownerName,prefabAssetId:t.prefabAssetId,...t.prefabNodeId?{prefabNodeId:t.prefabNodeId}:{}});for(let[r,i]of Object.entries(t.overrides?.materialSlotBindings??{})){let o=vt(i);o&&e.push({kind:"slot",scope:"prefab",gameObjectId:t.ownerId,gameObjectName:t.ownerName,materialAssetId:o,bindingPath:`${t.path}.materialSlotBindings.${r}.materialAssetId`,label:`${t.ownerName} / ${r}`,slotId:r,ownerNodePath:r,prefabAssetId:t.prefabAssetId,...t.prefabNodeId?{prefabNodeId:t.prefabNodeId}:{}})}}function Gt(e){let t=[...new Set((e.scene.materialAssets??[]).map(s=>s.id?.trim()).filter(s=>!!s))],n=new Set(t),r=Cs(e),i=r.filter(s=>!n.has(s.materialAssetId)),o=new Map;for(let s of i){let l=o.get(s.materialAssetId)??[];l.push(s),o.set(s.materialAssetId,l)}let a=[...o.entries()].map(([s,l])=>({kind:"missing-material-asset",materialAssetId:s,usages:l}));return{ok:a.length===0,materialAssetIds:t,references:r,missingMaterialAssetIds:a.map(s=>s.materialAssetId),missingReferences:i,issues:a}}function Rs(e,t,n){let r=new Map;for(let i of Ns(e,t,n))r.set(i.slotId,i);return[...r.values()].sort((i,o)=>(i.label??i.slotId).localeCompare(o.label??o.slotId)||i.slotId.localeCompare(o.slotId))}function Jr(e){return e?.sourceSurfaces[0]?.ownerNodePath??null}function Ns(e,t,n){let r=ge(t);if(!r)return[];let o=(n?.get(r.assetId)??e.assets.find(s=>s.id===r.assetId))?.metadata?.materialSlots;if(!Array.isArray(o))return[];let a=[];for(let s of o){let l=Os(s);l&&a.push(l)}return a}function Os(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,n=typeof t.slotId=="string"&&t.slotId.trim()?t.slotId.trim():"",r=Array.isArray(t.sourceSurfaces)?t.sourceSurfaces:null,i=$s(r);if(!n||!r||i.length===0||i.length!==r.length)return null;let o=typeof t.label=="string"&&t.label.trim()?t.label.trim():i[0].ownerNodePath,a=typeof t.materialName=="string"&&t.materialName.trim()?t.materialName.trim():"",s=Array.isArray(t.materialNames)?t.materialNames.filter(d=>typeof d=="string"&&!!d.trim()).map(d=>d.trim()):void 0,l=Gs(t.sourceMaterialProfiles);return{slotId:n,label:o,sourceSurfaces:i,...a?{materialName:a}:{},...s&&s.length>0?{materialNames:s}:{},...l&&l.length>0?{sourceMaterialProfiles:l}:{}}}function $s(e){return Array.isArray(e)?e.flatMap(t=>{let n=Fs(t);if(!n)return[];let r=Hr(typeof n.ownerNodePath=="string"?n.ownerNodePath:""),i=Number.isInteger(n.meshIndex)&&n.meshIndex>=0?n.meshIndex:void 0,o=Number.isInteger(n.primitiveIndex)&&n.primitiveIndex>=0?n.primitiveIndex:void 0;if(!r||i==null||o==null)return[];let a=Number.isInteger(n.nodeIndex)&&n.nodeIndex>=0?n.nodeIndex:void 0,s=Array.isArray(n.nodeIndexPath)?n.nodeIndexPath.filter(m=>Number.isInteger(m)&&m>=0):void 0,l=Number.isInteger(n.sourceMaterialIndex)&&n.sourceMaterialIndex>=0?n.sourceMaterialIndex:void 0,d=typeof n.sourceMeshName=="string"&&n.sourceMeshName.trim()?n.sourceMeshName.trim():void 0,u=typeof n.triangleCount=="number"&&Number.isFinite(n.triangleCount)&&n.triangleCount>=0?n.triangleCount:void 0,c=vs(n.boundingBox);return[{ownerNodePath:r,...a!=null?{nodeIndex:a}:{},...s&&s.length>0?{nodeIndexPath:s}:{},meshIndex:i,primitiveIndex:o,...l!=null?{sourceMaterialIndex:l}:{},...d?{sourceMeshName:d}:{},...u!=null?{triangleCount:u}:{},...c?{boundingBox:c}:{}}]}):[]}function vs(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n=qr(t.min),r=qr(t.max);if(!(!n&&!r))return{...n?{min:n}:{},...r?{max:r}:{}}}function qr(e){if(!Array.isArray(e)||e.length<3)return null;let[t,n,r]=e;return typeof t=="number"&&Number.isFinite(t)&&typeof n=="number"&&Number.isFinite(n)&&typeof r=="number"&&Number.isFinite(r)?[t,n,r]:null}function Gs(e){if(!Array.isArray(e))return;let t=e.map(_s).filter(n=>!!n);return t.length>0?t:void 0}function _s(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(!Number.isInteger(t.sourceMaterialIndex))return null;let n=typeof t.materialName=="string"&&t.materialName.trim()?t.materialName.trim():"",r=t.profile&&typeof t.profile=="object"&&!Array.isArray(t.profile)?t.profile:void 0,i=js(t.textureHints);return{sourceMaterialIndex:t.sourceMaterialIndex,...n?{materialName:n}:{},...r?{profile:r}:{},...i&&i.length>0?{textureHints:i}:{}}}function js(e){if(!Array.isArray(e))return;let t=e.map(Ls).filter(n=>!!n);return t.length>0?t:void 0}function Ls(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,n=typeof t.profilePath=="string"&&t.profilePath.trim()?t.profilePath.trim():"",r=typeof t.reason=="string"&&t.reason.trim()?t.reason.trim():"";return!n||!r?null:{profilePath:n,reason:r,...Number.isInteger(t.textureIndex)?{textureIndex:t.textureIndex}:{},...Number.isInteger(t.imageIndex)?{imageIndex:t.imageIndex}:{},...Number.isInteger(t.bufferView)?{bufferView:t.bufferView}:{},...typeof t.mimeType=="string"&&t.mimeType.trim()?{mimeType:t.mimeType.trim()}:{},...typeof t.uri=="string"&&t.uri.trim()?{uri:t.uri.trim()}:{}}}function Fs(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Us(e){return e.name?.trim()||e.id}function vt(e){return typeof e?.materialAssetId=="string"?e.materialAssetId.trim():""}function zs(e,t){return e?.label?.trim()||Jr(e)?.trim()||e?.slotId?.trim()||t}var jt=1;var cf=Symbol("unsupported-editor-scene-authored-clone-value");function An(e){return e.components.find(Hs)??null}function ge(e){return e.components.find(Ws)??null}function wn(e){return e.components.find(qs)??null}function _t(e){return e?.type==="prefab"&&_(e.prefab?.sourceAssetId)!=null}function Xr(e){return _(e?.prefab?.prefabId)!=null}function Yr(e){return _(e?.prefab?.sourceAssetId)}function at(e){if(!e?.prefab)return null;let t=Zr(e.prefab),n=_(e.prefab.rootNodeId);if(n&&t.some(i=>i.id===n))return n;let r=t.find(i=>i.kind==="root"&&!i.parentId);return r?r.id:null}function Tn(e){return e?.prefab?Zr(e.prefab):[]}function Zr(e){if(!Array.isArray(e.nodes))return[];let t=[];for(let n of e.nodes){let r=Bs(n);r&&!t.some(i=>i.id===r.id)&&t.push(r)}return structuredClone(t)}function Bs(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,n=_(t.id);return!n||!Vs(t.kind)?null:{id:n,..._(t.guid)?{guid:_(t.guid)}:{},..._(t.name)?{name:_(t.name)}:{},..._(t.parentId)?{parentId:_(t.parentId)}:{},kind:t.kind,...t.transform?{transform:structuredClone(t.transform)}:{},..._(t.sourceAssetId)?{sourceAssetId:_(t.sourceAssetId)}:{},..._(t.sourceNodePath)?{sourceNodePath:_(t.sourceNodePath)}:{},..._(t.childPrefabId)?{childPrefabId:_(t.childPrefabId)}:{},...t.primitive?{primitive:structuredClone(t.primitive)}:{},...t.light?{light:structuredClone(t.light)}:{},...t.marker?{marker:structuredClone(t.marker)}:{},...t.defaults?{defaults:structuredClone(t.defaults)}:{},...t.overrides?{overrides:structuredClone(t.overrides)}:{},...t.metadata?{metadata:structuredClone(t.metadata)}:{}}}function Vs(e){return e==="root"||e==="group"||e==="model"||e==="primitive"||e==="light"||e==="prefabInstance"||e==="marker"||e==="collision"}function Qr(e,t){let n=_(e?.materialAssetId),r=_(t?.materialAssetId),i=kt(e?.override,t?.override);return Xs({...r??n?{materialAssetId:r??n}:{},...ot(i)?{override:i}:{}})}function ei(e,t){let n={},r=Qr(e?.materialBinding,t?.materialBinding);r&&(n.materialBinding=r);let i=Zs(e?.materialSlotBindings,t?.materialSlotBindings);return i&&(n.materialSlotBindings=i),ot(n)?n:void 0}function st(e,t){let n=typeof t=="string"?Ys(e,t):t,r=typeof t=="string"?t:t.id,i=[],o=Xr(n)?n.prefab:null;if(!n||!o)return i.push({code:"not-prefab-instance",severity:"info",message:n?`GameObject "${n.id}" is not a prefab instance.`:`GameObject "${r}" was not found.`}),{gameObject:n,prefab:null,definition:null,sourceAsset:null,diagnostics:i};let a=e.assets.find(d=>d.id===o.prefabId&&_t(d));a||i.push({code:"missing-prefab-definition",severity:"error",message:`Prefab definition "${o.prefabId}" was not found.`,prefabId:o.prefabId});let s=Yr(a)??_(o.sourceAssetId);a&&o.sourceAssetId&&s&&o.sourceAssetId!==s&&i.push({code:"source-asset-mismatch",severity:"warning",message:`Prefab instance source "${o.sourceAssetId}" does not match definition source "${s}".`,prefabId:o.prefabId,expectedSourceAssetId:s,actualSourceAssetId:o.sourceAssetId});let l=s?e.assets.find(d=>d.id===s):void 0;if(s&&!l&&i.push({code:"missing-source-asset",severity:"error",message:`Prefab source asset "${s}" was not found.`,prefabId:o.prefabId,sourceAssetId:s}),s){let d=e.assets.filter(u=>_t(u)&&Yr(u)===s).map(u=>u.id);d.length>1&&i.push({code:"duplicate-source-prefab",severity:"info",message:`Source asset "${s}" is referenced by ${d.length} prefab definitions.`,prefabId:o.prefabId,sourceAssetId:s})}return{gameObject:n,prefab:o,definition:a??null,sourceAsset:l??null,diagnostics:i}}function Ce(e){return e.kind==="group"||e.kind==="instance"||e.kind==="transform"||e.kind==="primitive"?e.kind:Xr(e)?"instance":e.primitive?"primitive":ge(e)?"instance":wn(e)||e.transformType?"transform":"group"}function ti(e){let t=e.rendering&&typeof e.rendering=="object"&&!Array.isArray(e.rendering)?e.rendering:void 0,n=Ks(t?.renderingGroupId),r=Js(t?.alphaIndex),i={};return n!=null&&(i.renderingGroupId=n),r!=null&&(i.alphaIndex=r),Object.keys(i).length>0?i:void 0}function Ks(e){return e===0||e===1||e===2||e===3?e:null}function Hs(e){return e.type==="Transform"}function Ws(e){return e.type==="ModelRenderer"}function qs(e){return e.type==="ImageRenderer"}function Js(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function _(e){return typeof e=="string"&&e.trim().length>0?e.trim():null}function Ys(e,t){return e.scene.gameObjects.find(n=>n.id===t)??null}function Xs(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,n=_(t.materialAssetId),r=kt(t.override),i={...n?{materialAssetId:n}:{},...ot(r)?{override:r}:{}};return ot(i)?i:void 0}function Zs(e,t){let n=new Set([...Object.keys(e??{}),...Object.keys(t??{})]),r={};for(let i of n){let o=Qr(e?.[i],t?.[i]);o&&(r[i]=o)}return ot(r)?r:void 0}function ot(e){return!!e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length>0}var Qs=new Set(["id","guid","name","parentId","kind","transform","marker","metadata"]);function ni(e,t,n){if(e.kind!=="marker"){Object.prototype.hasOwnProperty.call(e,"marker")&&T("schema.invalidValue",`${n}.marker`);return}for(let s of Object.keys(e))Qs.has(s)||T("schema.invalidValue",`${n}.${s}`);dt(e.parentId)||T("schema.invalidReference",`${n}.parentId`),rd(e.transform,`${n}.transform`),ed(e.marker,`${n}.marker`);let r=dt(e.id),i=e.marker,o=td(i,`${n}.marker`),a=o[0]??null;for(let s of o){s.target.id===r&&T("schema.invalidReference",`${s.path}.id`),a&&(s.target.kind!==a.target.kind||s.target.id!==a.target.id)&&T("schema.invalidReference",s.path);let l=t.get(s.target.id);l&&(s.target.kind==="marker"&&l.kind!=="marker"&&T("schema.invalidReference",`${s.path}.kind`),s.target.kind==="scene-object"&&l.kind==="marker"&&T("schema.invalidReference",`${s.path}.kind`))}}function ed(e,t){let n=Ee(e);n||T("schema.invalidType",t),te(n,["schemaVersion","type","kind","tags","note","color","target","semanticFrame","geometry","metadata"],t),n.schemaVersion!==1&&T("schema.unsupportedVersion",`${t}.schemaVersion`),dt(n.type)||T("schema.invalidValue",`${t}.type`),n.kind!==void 0&&!dt(n.kind)&&T("schema.invalidValue",`${t}.kind`),n.tags!==void 0&&ad(n.tags,`${t}.tags`),n.note!==void 0&&typeof n.note!="string"&&T("schema.invalidType",`${t}.note`),n.color!==void 0&&od(n.color,`${t}.color`),n.target!==void 0&&Dn(n.target,`${t}.target`),n.semanticFrame!==void 0&&id(n.semanticFrame,`${t}.semanticFrame`),nd(n.geometry,`${t}.geometry`),n.metadata!==void 0&&sd(n.metadata,`${t}.metadata`)}function td(e,t){let n=[];return e.target&&n.push({target:e.target,path:`${t}.target`}),e.geometry.kind==="point"&&e.geometry.target&&n.push({target:e.geometry.target,path:`${t}.geometry.target`}),e.geometry.kind==="object-bounds"&&n.push({target:e.geometry.target,path:`${t}.geometry.target`}),n}function nd(e,t){let n=Ee(e);if(n||T("schema.invalidType",t),n.kind==="box"){te(n,["kind"],t);return}if(n.kind==="point"){te(n,["kind","coordinateSpace","position","offset","target"],t),n.coordinateSpace!==void 0&&n.coordinateSpace!=="world"&&n.coordinateSpace!=="local"&&T("schema.invalidValue",`${t}.coordinateSpace`),n.position!==void 0&&Se(n.position,`${t}.position`),n.offset!==void 0&&Se(n.offset,`${t}.offset`),n.target!==void 0&&Dn(n.target,`${t}.target`);return}if(n.kind==="object-bounds"){te(n,["kind","target"],t),Dn(n.target,`${t}.target`);return}if(n.kind==="polyhedron"){te(n,["kind","coordinateSpace","vertices","faces"],t),n.coordinateSpace!==void 0&&n.coordinateSpace!=="world"&&T("schema.invalidValue",`${t}.coordinateSpace`),Array.isArray(n.vertices)||T("schema.invalidType",`${t}.vertices`),n.vertices.forEach((r,i)=>Se(r,`${t}.vertices[${i}]`)),n.faces!==void 0&&(Array.isArray(n.faces)||T("schema.invalidType",`${t}.faces`),n.faces.forEach((r,i)=>{Array.isArray(r)||T("schema.invalidType",`${t}.faces[${i}]`),r.forEach((o,a)=>{(!Number.isInteger(o)||o<0)&&T("schema.invalidValue",`${t}.faces[${i}][${a}]`)})}));return}T("schema.invalidValue",`${t}.kind`)}function Dn(e,t){let n=Ee(e);n||T("schema.invalidType",t),te(n,["kind","id","label"],t),n.kind!=="marker"&&n.kind!=="scene-object"&&T("schema.invalidValue",`${t}.kind`),dt(n.id)||T("schema.invalidValue",`${t}.id`),n.label!==void 0&&typeof n.label!="string"&&T("schema.invalidType",`${t}.label`)}function rd(e,t){let n=Ee(e);if(n||T("schema.invalidType",t),n.type!=="Transform"&&T("schema.invalidValue",`${t}.type`),n.mode==="matrix"){te(n,["type","mode","matrix"],t),(!Array.isArray(n.matrix)||n.matrix.length!==16)&&T("schema.invalidType",`${t}.matrix`),n.matrix.forEach((r,i)=>Lt(r,`${t}.matrix[${i}]`));return}te(n,["type","mode","position","rotation","scale"],t),n.mode!==void 0&&n.mode!=="trs"&&T("schema.invalidValue",`${t}.mode`),Se(n.position,`${t}.position`),Se(n.rotation,`${t}.rotation`),n.scale!==void 0&&Se(n.scale,`${t}.scale`)}function id(e,t){let n=Ee(e);n||T("schema.invalidType",t),te(n,["origin","forward","right","up","label","description"],t),Se(n.origin,`${t}.origin`);for(let r of["forward","right","up"])n[r]!==void 0&&Se(n[r],`${t}.${r}`);for(let r of["label","description"])n[r]!==void 0&&typeof n[r]!="string"&&T("schema.invalidType",`${t}.${r}`)}function od(e,t){let n=Ee(e);n||T("schema.invalidType",t),te(n,["r","g","b"],t);for(let r of["r","g","b"])Lt(n[r],`${t}.${r}`),(n[r]<0||n[r]>1)&&T("schema.invalidValue",`${t}.${r}`)}function Se(e,t){let n=Ee(e);n||T("schema.invalidType",t),te(n,["x","y","z"],t);for(let r of["x","y","z"])Lt(n[r],`${t}.${r}`)}function ad(e,t){Array.isArray(e)||T("schema.invalidType",t),e.forEach((n,r)=>{typeof n!="string"&&T("schema.invalidType",`${t}[${r}]`)})}function sd(e,t){let n=Ee(e);n||T("schema.invalidType",t),Mn(n,t,new Set)}function Mn(e,t,n){if(e===null||typeof e=="string"||typeof e=="boolean")return;if(typeof e=="number"){Lt(e,t);return}(!e||typeof e!="object")&&T("schema.invalidType",t),n.has(e)&&T("schema.invalidValue",t);let r=Object.getPrototypeOf(e);Array.isArray(e)?r!==Array.prototype&&T("schema.invalidType",t):r!==Object.prototype&&r!==null&&T("schema.invalidType",t),n.add(e);try{if(Array.isArray(e))e.forEach((i,o)=>Mn(i,`${t}[${o}]`,n));else for(let[i,o]of Object.entries(e))Mn(o,`${t}.${i}`,n)}finally{n.delete(e)}}function te(e,t,n){let r=new Set(t);for(let i of Object.keys(e))r.has(i)||T("schema.invalidValue",`${n}.${i}`)}function Lt(e,t){(typeof e!="number"||!Number.isFinite(e))&&T("schema.invalidValue",t)}function Ee(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function dt(e){return typeof e=="string"&&e.trim()?e.trim():null}function T(e,t){throw new Error(`${e}: ${t}`)}function Cn(e,t){return t===e.rootNodeId?e.instanceId:`${e.instanceId}:${dd(t)}`}function dd(e){return encodeURIComponent(e)}function kn(e,t){return{...structuredClone(e),id:Cn(t,e.id)}}function ri(e,t){let n=structuredClone(e);return n.target&&(n.target=kn(n.target,t)),n.geometry.kind==="point"&&n.geometry.target&&(n.geometry.target=kn(n.geometry.target,t)),n.geometry.kind==="object-bounds"&&(n.geometry.target=kn(n.geometry.target,t)),n}var ii={x:-.3,y:-1,z:-.2};var oi="scene.main",ai="scene";function si(e){let t=e.meta?.authoringSource;return{sourceId:t?.sourceId||oi,sourceType:t?.sourceType||ai,revision:typeof t?.revision=="number"?t.revision:1}}var di={type:"directional",intensity:2,direction:{...ii},diffuseColor:{r:1,g:1,b:1},inspectorLanguage:"zh"},Rn={type:"hemispheric",intensity:.8,diffuseColor:{r:1,g:1,b:1},groundColor:{r:.48,g:.52,b:.62},inspectorLanguage:"zh"};function ci(e){return e.filter(t=>t.kind==="model"||t.kind==="texture").map(ld).sort(fd)}function ld(e){let t=e.kind==="texture"?"texture":e.kind==="prefab"?"prefab":"glb",n=Re(e.guid),r=gd(e);return{id:e.assetId,...n?{guid:n}:{},assetId:e.assetId,type:t,kind:e.kind==="texture"?"texture":e.kind==="prefab"?"prefab":"model",displayName:e.displayName,category:e.category??md(e),warmupCount:e.warmupCount,singleton:e.singleton,materialMode:e.materialMode,defaults:Ut(e.defaults),prefab:Ut(e.prefab),external:Ut(e.external),metadata:r,origin:e.origin??"project",dedupeKey:e.dedupeKey??n??yd(e.external)??e.assetId,placeable:ud(e)}}function cd(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return t.kind==="texture"||t.type==="texture"}function ud(e){return cd(e)?!0:!e||typeof e!="object"||Array.isArray(e)||e.placeable!==!1}function fd(e,t){return(e.category??"").localeCompare(t.category??"")||e.displayName.localeCompare(t.displayName)||e.assetId.localeCompare(t.assetId)||e.type.localeCompare(t.type)}function md(e){return e.kind==="prefab"?"Prefab":e.kind==="texture"?"Texture":e.kind==="image"?"Image":e.kind==="sound"?"Sound":"Model"}function gd(e){return pd({originalFileName:e.originalFileName,relativePath:e.relativePath,codeKey:e.codeKey,contentHash:e.contentHash,byteSize:e.byteSize,...Ut(e.metadata)})}function pd(e){if(!Array.isArray(e.materialSlots))return e;let t=Ft(e.assetAnalysis),n=Array.isArray(t?.meshes)?t.meshes:[],r=Array.isArray(t?.nodes)?t.nodes:[],i=new Map(n.flatMap(l=>{let d=Ft(l),u=lt(d?.meshIndex),c=Re(d?.name);return u==null||!c?[]:[[u,c]]})),o=new Map(r.flatMap(l=>{let d=Ft(l),u=lt(d?.nodeIndex),c=Re(d?.meshName);return u==null||!c?[]:[[u,c]]})),a=li(t,"meshCount",n.length)||li(t,"nodeCount",r.length),s=e.materialSlots.map(l=>{let d=Ft(l);if(!d||Re(d.sourceMeshName))return l;let u=lt(d.meshIndex);if(u==null)return l;let c=lt(d.nodeIndex),m=i.get(u)??(c==null?void 0:o.get(c))??(a?bd(d):void 0);return m?{...d,sourceMeshName:m}:l});return{...e,materialSlots:s}}function bd(e){let t=Re(e.label);if(t){let n=t.replace(/\s+\/\s+Primitive\s+\d+$/,"").trim();if(n)return n}return Re(e.ownerNodePath)?.split("/").filter(Boolean).pop()}function li(e,t,n){let r=lt(e?.[t]);return r!=null&&r>n}function yd(e){return!e||typeof e!="object"||Array.isArray(e)?null:Re(e.platformAssetId)}function Re(e){return typeof e=="string"&&e.trim()?e.trim():null}function lt(e){return Number.isInteger(e)&&e>=0?e:null}function Ft(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function Ut(e){return e==null?void 0:structuredClone(e)}function mi(e,t){let n=new Map(t.filter(o=>o.type==="glb").map(o=>[o.assetId,o])),r=e.assets.map(o=>{if(o.type!=="glb")return o;let a=n.get(o.id);return a?ui(o,a):o}),i=new Set(e.assets.map(o=>o.id));for(let o of hd(e)){if(i.has(o))continue;let a=n.get(o);a&&(r.push(ui({id:o,type:"glb"},a)),i.add(o))}return{...e,assets:r}}function hd(e){let t=[],n=new Set,r=i=>{let o=Sd(i);!o||n.has(o)||(n.add(o),t.push(o))};for(let i of e.assets)if(i.type==="prefab"){r(i.prefab?.sourceAssetId);for(let o of i.prefab?.nodes??[])r(o.sourceAssetId)}for(let i of e.scene.gameObjects){for(let a of i.components)a.type==="ModelRenderer"&&r(a.assetId);r(i.prefab?.sourceAssetId);let o=fi(fi(i)?.instance);r(o?.assetId)}return t}function ui(e,t){return{...e,guid:t.guid??e.guid,displayName:t.displayName||e.displayName,category:t.category??e.category,warmupCount:t.warmupCount??e.warmupCount,singleton:t.singleton??e.singleton,materialMode:t.materialMode??e.materialMode,defaults:zt(t.defaults??e.defaults),prefab:zt(t.prefab??e.prefab),external:zt(t.external??e.external),metadata:zt(t.metadata??e.metadata)}}function zt(e){return e==null?void 0:structuredClone(e)}function fi(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function Sd(e){return(typeof e=="string"?e.trim():"")||void 0}function gi(e){let t=Gt(e);if(t.ok)return;let n=new Error(`editor_scene_material_assets_missing: ${t.missingMaterialAssetIds.join(", ")}`);throw n.details={missingMaterialAssetIds:t.missingMaterialAssetIds,missingReferences:t.missingReferences.map(r=>({materialAssetId:r.materialAssetId,gameObjectId:r.gameObjectId,bindingPath:r.bindingPath,label:r.label,kind:r.kind,...r.slotId?{slotId:r.slotId}:{},...r.ownerNodePath?{ownerNodePath:r.ownerNodePath}:{}}))},n}var Ed="sun_light";function xd(e,t,n={}){let r=Ad(Dd(e,t)),i=wd(e,t),o=Td(t,"instance"),a=[...r.diagnostics,...i.diagnostics,...o.diagnostics];return{settings:ce(n.project,r.settings,i.settings,n.node,o.settings),diagnostics:a}}function Pd(e){let t=new Map,n=e.casterId;for(let r of e.explicitReceiverIds??[]){let i=Vt(e.document,r);!i||i.id===n||i.active===!1||t.set(i.id,{receiverId:i.id,source:"explicit",score:120,...ct(i,"explicit",120,["explicit receiver id"])})}for(let r of e.document.scene.gameObjects){if(r.id===n||r.active===!1)continue;let o=re(r.shadow).shadow?.receive;if(o!=="none"){if(o==="enabled"){Nn(t,{receiverId:r.id,source:"explicit",score:100,...ct(r,"explicit",100,["shadow.receive enabled"])});continue}if(o==="auto"){Nn(t,{receiverId:r.id,source:"auto",score:70,...ct(r,"auto",70,["shadow.receive auto"])});continue}Rd(r)&&Nn(t,{receiverId:r.id,source:"auto",score:40,...ct(r,"auto",40,["plane primitive auto receiver"])})}}return[...t.values()].sort((r,i)=>i.score-r.score||r.receiverId.localeCompare(i.receiverId))}function Bt(e){let t=e.caster?.id===e.casterId?e.caster:Vt(e.document,e.casterId),n=[];if(!t)return{casterId:e.casterId,receiverIds:[],backend:"none",mode:"none",quality:e.fallbackQuality??"medium",params:xt(e.fallbackQuality??"medium"),diagnostics:[{code:"shadow.invalidTarget",severity:"error",message:`Shadow caster "${e.casterId}" was not found.`,casterId:e.casterId}]};let r=e.settings?{settings:ce(e.settings.project,e.settings.source,e.settings.prefab,e.settings.node,e.settings.instance),diagnostics:[]}:xd(e.document,t);n.push(...r.diagnostics);let o=r.settings?.cast==="none"?"none":an(r.settings,e.fallbackMode??"none"),a=sn(r.settings,e.fallbackQuality??"medium"),s=xt(a,r.settings?.params),l=Id(o),d=kd(e.explicitReceiverIds),u=l==="none"?{candidates:[],diagnostics:[]}:d.length>0&&e.strictExplicitReceivers===!0?Cd(e.document,t.id,d):{candidates:Pd({document:e.document,casterId:t.id,explicitReceiverIds:d.length>0?d:void 0}),diagnostics:[]};n.push(...u.diagnostics);let c=u.candidates;l!=="none"&&c.length===0&&n.push({code:"shadow.receiverNotFound",severity:"warning",message:`No shadow receiver was found for caster "${t.id}".`,casterId:t.id});let m=l==="none"?null:Md(e.document,r.settings,e.defaultLightId);return m?.diagnostic&&n.push(m.diagnostic),{casterId:t.id,receiverIds:c.map(p=>p.receiverId),...m?.lightId?{lightId:m.lightId}:{},backend:l,mode:o,quality:a,params:s,diagnostics:n}}function Id(e){return e==="dynamic"?"dynamic-map":e==="static"?"static-baked":e==="blob"?"blob":e==="projected"?"projected":"none"}function Ad(e){if(!e)return{diagnostics:[]};let t=e.defaults&&typeof e.defaults=="object"&&!Array.isArray(e.defaults)?e.defaults:void 0;if(!t)return{diagnostics:[]};let n=re(t.shadow);return{settings:n.shadow,diagnostics:n.diagnostics.map(r=>({...r,details:{...r.details??{},source:"asset",assetId:e.id}}))}}function wd(e,t){let n=typeof t.prefab?.prefabId=="string"?t.prefab.prefabId:null;if(!n)return{diagnostics:[]};let r=e.assets.find(o=>o.id===n);if(!r?.prefab?.defaults)return{diagnostics:[]};let i=re(r.prefab.defaults.shadow);return{settings:i.shadow,diagnostics:i.diagnostics.map(o=>({...o,details:{...o.details??{},source:"prefab",prefabId:n}}))}}function Td(e,t){let n=re(e.shadow);return{settings:n.shadow,diagnostics:n.diagnostics.map(r=>({...r,casterId:e.id,details:{...r.details??{},source:t}}))}}function Dd(e,t){let r=ge(t)?.assetId??t.prefab?.sourceAssetId;return r?e.assets.find(i=>i.id===r)??null:null}function Md(e,t,n){if((t?.light?.mode??"inherit")==="explicit"){let a=t?.light?.lightId;return a&&pi(e,a)?{lightId:a}:{diagnostic:{code:"shadow.lightNotFound",severity:"warning",message:a?`Explicit shadow light "${a}" was not found.`:"Shadow light mode is explicit, but no lightId was configured.",...a?{lightId:a}:{}}}}let i=n??Ed;if(pi(e,i))return{lightId:i};let o=e.scene.gameObjects.find(a=>bi(a)&&a.active!==!1);return o?{lightId:o.id}:{diagnostic:{code:"shadow.lightNotFound",severity:"warning",message:"No directional shadow light was found."}}}function pi(e,t){let n=Vt(e,t);return!!n&&n.active!==!1&&bi(n)}function bi(e){return Ce(e)==="transform"&&e.light?.type==="directional"}function Nn(e,t){let n=e.get(t.receiverId);(!n||t.score>n.score)&&e.set(t.receiverId,t)}function kd(e){let t=new Set,n=[];for(let r of e??[]){let i=typeof r=="string"?r.trim():"";!i||t.has(i)||(t.add(i),n.push(i))}return n}function Cd(e,t,n){let r=[],i=[];for(let o of n){let a=Vt(e,o);if(!a){i.push({code:"shadow.receiverNotFound",severity:"warning",message:`Explicit shadow receiver "${o}" was not found.`,casterId:t,receiverId:o,details:{source:"explicit"}});continue}if(a.id===t){i.push({code:"shadow.receiverNotFound",severity:"warning",message:`Shadow caster "${t}" cannot be used as its own receiver.`,casterId:t,receiverId:o,details:{source:"explicit",reason:"self"}});continue}if(a.active===!1){i.push({code:"shadow.receiverNotFound",severity:"warning",message:`Explicit shadow receiver "${o}" is inactive.`,casterId:t,receiverId:o,details:{source:"explicit",reason:"inactive"}});continue}r.push({receiverId:a.id,source:"explicit",score:120,...ct(a,"explicit",120,["explicit receiver id"])})}return{candidates:r,diagnostics:i}}function ct(e,t,n,r){let i=re(e.shadow).shadow;return{active:e.active!==!1,visible:e.active!==!1,...i?.receive?{receive:i.receive}:{},suitability:{score:n,material:Ce(e)==="primitive"?"primitive":t,reasons:r}}}function Rd(e){return Ce(e)==="primitive"&&e.primitive?.shape==="plane"}function Vt(e,t){return e.scene.gameObjects.find(n=>n.id===t)??null}var xi="@fps-games/editor.playable-sdk.scene-compiler",Pi="3",Nd=new Set(["shadowMode","childMaterialBindings","childMaterials"]),Od=new Set(["coordinateSpace","center","size","rotation"]),yi=new Set(["root","group","model","primitive","light","prefabInstance","marker","collision"]);function Ii(e){$d(e,!0)}function $d(e,t){let n=I(e);if(!n)throw new Error("editor_scene_must_be_object");if(n.schemaVersion!==1)throw h("schema.unsupportedVersion","$.schemaVersion");if(!Array.isArray(n.assets))throw new Error("editor_scene_assets_must_be_array");let r=I(n.scene);if(!Array.isArray(r?.gameObjects))throw new Error("editor_scene_game_objects_must_be_array");if(r.materialAssets!=null&&!Array.isArray(r.materialAssets))throw new Error("editor_scene_material_assets_must_be_array");r.shadowMapExperiment!==void 0&&gn(r.shadowMapExperiment),r.gameObjects.forEach((i,o)=>{let a=I(i);a?.shadowMapExperiment!==void 0&&tt(a.shadowMapExperiment,`$.scene.gameObjects[${o}].shadowMapExperiment`)}),_d(n.assets,r.gameObjects),vn(n,"$"),jd(n.assets),Gd(n.assets,r.gameObjects),Ld(r.gameObjects,n.assets),Fd(r.gameObjects),vd(r.materialAssets??[]),t&&Ud(n.assets,r.gameObjects),gi(n)}function vd(e){for(let t=0;t<e.length;t+=1){let n=I(e[t]),r=`$.scene.materialAssets[${t}]`;if(!n)throw h("schema.invalidType",r);if(Object.prototype.hasOwnProperty.call(n,"materialKind"))throw h("schema.deprecatedField",`${r}.materialKind`);if(Object.prototype.hasOwnProperty.call(n,"profile"))throw h("schema.deprecatedField",`${r}.profile`);if(!A(n.id))throw h("schema.invalidType",`${r}.id`);if(!A(n.name))throw h("schema.invalidType",`${r}.name`);let i=A(n.shaderId);if(!i)throw h("schema.invalidValue",`${r}.shaderId`);if(Ur(i)){let a=zr(i,n.properties,`${r}.properties`);if(a[0])throw h("schema.invalidValue",a[0].path)}else if(!I(n.properties))throw h("schema.invalidType",`${r}.properties`);for(let a of Object.keys(n))if(!["id","guid","name","shaderId","properties","system","origin"].includes(a))throw h("schema.unknownField",`${r}.${a}`)}}function Gd(e,t){let n=new Set(e.map(I).filter(o=>o?.type==="glb").map(o=>A(o?.id)).filter(o=>!!o)),r=new Set(e.map(I).filter(o=>o?.type==="texture").map(o=>A(o?.id)).filter(o=>!!o)),i=new Map;for(let o of e.map(I)){if(o?.type!=="prefab")continue;let a=A(o.id),s=A(I(o.prefab)?.sourceAssetId);a&&s&&i.set(a,s)}for(let o=0;o<e.length;o+=1){let a=I(e[o]);if(a?.type!=="prefab")continue;let s=I(a.prefab),l=A(s?.sourceAssetId),d=A(s?.rootNodeId);if(!l||!n.has(l))throw h("schema.invalidReference",`$.assets[${o}].prefab.sourceAssetId`);let u=Array.isArray(s?.nodes)?s.nodes:[];for(let c=0;c<u.length;c+=1){let m=I(u[c]),p=A(m?.sourceAssetId);if(m?.kind==="model"&&(!p||!n.has(p)))throw h("schema.invalidReference",`$.assets[${o}].prefab.nodes[${c}].sourceAssetId`);if(m?.kind==="prefabInstance"){let g=A(m.childPrefabId),b=g?i.get(g):null;if(A(m.id)===d&&l!==b)throw h("schema.invalidReference",`$.assets[${o}].prefab.sourceAssetId`);if(p&&p!==b)throw h("schema.invalidReference",`$.assets[${o}].prefab.nodes[${c}].sourceAssetId`)}}}for(let o=0;o<t.length;o+=1){let a=I(t[o]),s=A(I(a?.instance)?.assetId);if(s&&!n.has(s))throw h("schema.invalidReference",`$.scene.gameObjects[${o}].instance.assetId`);let l=Array.isArray(a?.components)?a.components:[];for(let d=0;d<l.length;d+=1){let u=I(l[d]);if(u?.type!=="ModelRenderer")continue;let c=A(u.assetId);if(!c||!n.has(c))throw h("schema.invalidReference",`$.scene.gameObjects[${o}].components[${d}].assetId`)}for(let d=0;d<l.length;d+=1){let u=I(l[d]);if(u?.type!=="ImageRenderer")continue;let c=A(u.assetId);if(!c||!r.has(c))throw h("schema.invalidReference",`$.scene.gameObjects[${o}].components[${d}].assetId`);let m=I(u.size);if(!m||!Ei(m.width)||!Ei(m.height))throw h("schema.invalidValue",`$.scene.gameObjects[${o}].components[${d}].size`)}}}function _d(e,t){let n=new Set;e.forEach((o,a)=>{let s=I(o);if(!s)throw h("schema.invalidType",`$.assets[${a}]`);let l=A(s.id);if(!l||!A(s.type))throw h("schema.invalidValue",`$.assets[${a}]`);if(n.has(l))throw h("schema.invalidValue",`$.assets[${a}].id`);n.add(l);let d=I(s.defaults);d?.shadowMapExperiment!==void 0&&tt(d.shadowMapExperiment,`$.assets[${a}].defaults.shadowMapExperiment`)});let r=new Set,i=new Map;t.forEach((o,a)=>{let s=I(o);if(!s)throw h("schema.invalidType",`$.scene.gameObjects[${a}]`);let l=A(s.id);if(!l)throw h("schema.invalidValue",`$.scene.gameObjects[${a}].id`);if(r.has(l))throw h("schema.invalidValue",`$.scene.gameObjects[${a}].id`);if(r.add(l),i.set(l,{value:s,index:a}),!Array.isArray(s.components))throw h("schema.invalidType",`$.scene.gameObjects[${a}].components`);s.components.forEach((d,u)=>{let c=I(d);if(!c)throw h("schema.invalidType",`$.scene.gameObjects[${a}].components[${u}]`);if(!A(c.type))throw h("schema.invalidValue",`$.scene.gameObjects[${a}].components[${u}].type`)})});for(let[o,a]of i){if(!("parentId"in a.value))continue;let s=A(a.value.parentId);if(!s||!i.has(s))throw h("schema.invalidReference",`$.scene.gameObjects[${a.index}].parentId`);let l=new Set([o]),d=s;for(;d;){if(l.has(d))throw h("schema.invalidReference",`$.scene.gameObjects[${a.index}].parentId`);l.add(d);let u=i.get(d)?.value;d=u&&u.parentId!=null?A(u.parentId):null}}}function vn(e,t){if(Array.isArray(e)){e.forEach((r,i)=>vn(r,`${t}[${i}]`));return}let n=I(e);if(n)for(let[r,i]of Object.entries(n)){let o=`${t}.${r}`;if(Nd.has(r))throw h("schema.deprecatedField",o);r==="shadow"&&Ze(i,o),!(r==="metadata"||r==="shadowMapExperiment")&&vn(i,o)}}function jd(e){let t=new Set(e.map(I).filter(a=>a?.type==="prefab").map(a=>A(a?.id)).filter(a=>!!a)),n=new Map;for(let a=0;a<e.length;a+=1){let s=I(e[a]);if(s?.type!=="prefab")continue;let l=I(s.prefab);if(!Array.isArray(l?.nodes))throw h("schema.unsupportedVersion",`$.assets[${a}].prefab.nodes`);hi(l.defaults,`$.assets[${a}].prefab.defaults`);let d=[],u=new Set;for(let g=0;g<l.nodes.length;g+=1){let b=`$.assets[${a}].prefab.nodes[${g}]`,S=I(l.nodes[g]);if(!S)throw h("schema.invalidType",b);hi(S.defaults,`${b}.defaults`);let x=A(S.id);if(!x||!yi.has(String(S.kind)))throw h("schema.invalidValue",b);if(u.has(x))throw h("schema.invalidValue",`${b}.id`);u.add(x),d.push(S)}let c=A(l?.rootNodeId),m=c?d.find(g=>A(g?.id)===c):null,p=!!m&&yi.has(String(m.kind))&&!Object.prototype.hasOwnProperty.call(m,"parentId");if(l?.compositionVersion!==jt||d.length===0||!p)throw h("schema.unsupportedVersion",`$.assets[${a}].prefab`);n.set(A(s.id),d.flatMap((g,b)=>{let S=A(g.childPrefabId);return S?[{prefabId:S,path:`$.assets[${a}].prefab.nodes[${b}].childPrefabId`}]:[]}));for(let g=0;g<d.length;g+=1){let b=d[g];ni(b,new Map(d.map(M=>[A(M.id),M])),`$.assets[${a}].prefab.nodes[${g}]`);let S=A(b.id),x=A(b.parentId);if(S!==c&&(!x||!u.has(x)))throw h("schema.invalidReference",`$.assets[${a}].prefab.nodes[${g}].parentId`);if(b.kind==="prefabInstance"){let M=A(b.childPrefabId);if(!M||!t.has(M))throw h("schema.invalidReference",`$.assets[${a}].prefab.nodes[${g}].childPrefabId`)}let D=new Set([S]),w=x;for(;w;){if(D.has(w))throw h("schema.invalidReference",`$.assets[${a}].prefab.nodes[${g}].parentId`);D.add(w);let M=d.find(O=>A(O.id)===w);w=M?A(M.parentId):null}}}let r=new Set,i=new Set,o=a=>{if(!i.has(a)){r.add(a);for(let s of n.get(a)??[]){if(r.has(s.prefabId))throw h("schema.invalidReference",s.path);o(s.prefabId)}r.delete(a),i.add(a)}};for(let a of n.keys())o(a)}function hi(e,t){if(e==null)return;let n=I(e);if(!n)throw h("schema.invalidType",t);if(Object.prototype.hasOwnProperty.call(n,"active")&&typeof n.active!="boolean")throw h("schema.invalidType",`${t}.active`);n.shadowMapExperiment!==void 0&&tt(n.shadowMapExperiment,`${t}.shadowMapExperiment`)}function Ld(e,t){let n=new Map;for(let r of t.map(I)){if(r?.type!=="prefab")continue;let i=A(r.id),o=A(I(r.prefab)?.sourceAssetId);i&&o&&n.set(i,o)}for(let r=0;r<e.length;r+=1){let i=I(e[r]);if(!i||i.prefab==null)continue;let o=I(i.prefab),a=A(o?.prefabId),s=a?n.get(a):null;if(!a||!s)throw h("schema.unsupportedVersion",`$.scene.gameObjects[${r}].prefab`);if(A(o?.sourceAssetId)!==s)throw h("schema.invalidReference",`$.scene.gameObjects[${r}].prefab.sourceAssetId`);let l=A(I(i.instance)?.assetId);if(l&&l!==s)throw h("schema.invalidReference",`$.scene.gameObjects[${r}].instance.assetId`);let d=Array.isArray(i.components)?i.components:[];for(let u=0;u<d.length;u+=1){let c=I(d[u]);if(c?.type==="ModelRenderer"&&A(c.assetId)!==s)throw h("schema.invalidReference",`$.scene.gameObjects[${r}].components[${u}].assetId`)}}}function Fd(e){for(let t=0;t<e.length;t+=1){let n=I(I(I(e[t])?.marker)?.geometry);if(n?.kind!=="box")continue;for(let i of Od)if(Object.prototype.hasOwnProperty.call(n,i))throw h("schema.deprecatedField",`$.scene.gameObjects[${t}].marker.geometry.${i}`);if(!(Array.isArray(I(e[t])?.components)?I(e[t]).components:[]).some(i=>I(i)?.type==="Transform"))throw h("schema.invalidValue",`$.scene.gameObjects[${t}].components`)}}function Ud(e,t){let n=new Map,r=new Map;for(let i=0;i<e.length;i+=1){let o=I(e[i]),a=A(o?.id);if(!o||!a)continue;if(o.type==="prefab"){let c=A(I(o.prefab)?.sourceAssetId);c&&r.set(a,c)}let s=I(o.metadata),l=s?.materialSlots;if(l==null){n.set(a,new Set);continue}if(!Array.isArray(l))throw h("schema.invalidType",`$.assets[${i}].metadata.materialSlots`);let d=zd(s?.assetAnalysis),u=new Set;for(let c=0;c<l.length;c+=1){let m=I(l[c]),p=A(m?.slotId);if(!m||!p)throw h("schema.invalidValue",`$.assets[${i}].metadata.materialSlots[${c}]`);let g=`$.assets[${i}].metadata.materialSlots[${c}]`;for(let b of["ownerNodePath","nodeIndex","nodeIndexPath","meshIndex","primitiveIndex","sourceMaterialIndex","sourceMaterialIndices","sourceMeshName","triangleCount","boundingBox"])if(Object.prototype.hasOwnProperty.call(m,b))throw h("schema.deprecatedField",`${g}.${b}`);if(!Array.isArray(m.sourceSurfaces))throw h("schema.invalidType",`${g}.sourceSurfaces`);if(m.sourceSurfaces.length===0)throw h("schema.invalidValue",`${g}.sourceSurfaces`);for(let b=0;b<m.sourceSurfaces.length;b+=1){let S=`${g}.sourceSurfaces[${b}]`,x=I(m.sourceSurfaces[b]);if(!x||!A(x.ownerNodePath))throw h("schema.invalidValue",S);Si(x,"nodeIndex",S),Si(x,"sourceMaterialIndex",S);for(let w of["meshIndex","primitiveIndex"])if(!Number.isInteger(x[w])||x[w]<0)throw h("schema.invalidValue",`${S}.${w}`);if(x.nodeIndexPath!=null&&(!Array.isArray(x.nodeIndexPath)||x.nodeIndexPath.some(w=>!Number.isInteger(w)||w<0)))throw h("schema.invalidValue",`${S}.nodeIndexPath`);let D=x.meshIndex;if(!A(x.sourceMeshName)&&!d.has(D))throw h("schema.invalidValue",`${S}.sourceMeshName`)}if(u.has(p))throw h("schema.invalidValue",`$.assets[${i}].metadata.materialSlots[${c}].slotId`);u.add(p)}n.set(a,u)}for(let i=0;i<e.length;i+=1){let o=I(e[i]);if(o?.type!=="prefab")continue;let a=I(o.prefab),s=A(a?.sourceAssetId);On(a?.overrides,s?n.get(s):void 0,`$.assets[${i}].prefab.overrides`);let l=Array.isArray(a?.nodes)?a.nodes:[];for(let d=0;d<l.length;d+=1){let u=I(l[d]),c=A(u?.childPrefabId),m=A(u?.sourceAssetId)??(c?r.get(c)??null:null);On(u?.overrides,m?n.get(m):void 0,`$.assets[${i}].prefab.nodes[${d}].overrides`)}}for(let i=0;i<t.length;i+=1){let o=I(t[i]),s=(Array.isArray(o?.components)?o.components:[]).map(I).find(d=>d?.type==="ModelRenderer"),l=A(s?.assetId);On(o?.overrides,l?n.get(l):void 0,`$.scene.gameObjects[${i}].overrides`)}}function On(e,t,n){let r=I(e);if(!r||r.materialSlotBindings==null)return;let i=I(r.materialSlotBindings);if(!i)throw h("schema.invalidType",`${n}.materialSlotBindings`);for(let[o,a]of Object.entries(i)){if(!t?.has(o))throw h("schema.invalidReference",`${n}.materialSlotBindings.${o}`);let s=`${n}.materialSlotBindings.${o}`,l=I(a);if(!l)throw h("schema.invalidType",s);for(let d of Object.keys(l))if(d!=="materialAssetId"&&d!=="override")throw h("schema.deprecatedField",`${s}.${d}`);if("materialAssetId"in l&&l.materialAssetId!=null&&!A(l.materialAssetId))throw h("schema.invalidValue",`${s}.materialAssetId`);if("override"in l&&!I(l.override))throw h("schema.invalidType",`${s}.override`);"override"in l&&Bd(l.override,`${s}.override`)}}function Si(e,t,n){let r=e[t];if(r!=null&&(!Number.isInteger(r)||r<0))throw h("schema.invalidValue",`${n}.${t}`)}function zd(e){let t=I(e),n=Array.isArray(t?.meshes)?t.meshes:[];return new Set(n.flatMap(r=>{let i=I(r),o=i?.meshIndex,a=Number.isInteger(o)?o:null;return a!=null&&A(i?.name)?[a]:[]}))}function Bd(e,t){let n=I(e);if(!n)throw h("schema.invalidType",t);if(ze(n,["lightingModel","baseColor","normal","metallic","roughness","metallicRoughness","occlusion","emission","alpha"],t),"lightingModel"in n&&!["lit","unlit"].includes(String(n.lightingModel)))throw h("schema.invalidValue",`${t}.lightingModel`);for(let r of["metallic","roughness"])ft(n,r,t);Vd(n.baseColor,`${t}.baseColor`),$n(n.normal,`${t}.normal`,["texture","strength"]),$n(n.metallicRoughness,`${t}.metallicRoughness`,["texture"]),$n(n.occlusion,`${t}.occlusion`,["texture","strength"]),Kd(n.emission,`${t}.emission`),Hd(n.alpha,`${t}.alpha`)}function Vd(e,t){if(e==null)return;let n=Be(e,t);ze(n,["color","texture","brightness","saturation","contrast","hue"],t),Ai(n.color,`${t}.color`),ut(n.texture,`${t}.texture`);for(let r of["brightness","saturation","contrast","hue"])ft(n,r,t)}function $n(e,t,n){if(e==null)return;let r=Be(e,t);ze(r,n,t),ut(r.texture,`${t}.texture`),n.includes("strength")&&ft(r,"strength",t)}function Kd(e,t){if(e==null)return;let n=Be(e,t);ze(n,["color","intensity","texture","maskTexture"],t),Ai(n.color,`${t}.color`),ft(n,"intensity",t),ut(n.texture,`${t}.texture`),ut(n.maskTexture,`${t}.maskTexture`)}function Hd(e,t){if(e==null)return;let n=Be(e,t);if(ze(n,["mode","opacity","cutoff","texture"],t),"mode"in n&&!["opaque","mask","blend"].includes(String(n.mode)))throw h("schema.invalidValue",`${t}.mode`);for(let r of["opacity","cutoff"])ft(n,r,t);ut(n.texture,`${t}.texture`)}function ut(e,t){if(e==null)return;let n=Be(e,t);ze(n,["url","textureAssetId"],t);for(let r of["url","textureAssetId"])if(r in n&&n[r]!=null&&!A(n[r]))throw h("schema.invalidValue",`${t}.${r}`)}function Ai(e,t){if(e==null)return;let n=Be(e,t);for(let r of["r","g","b"])Wd(n,r,t)}function ze(e,t,n){let r=new Set(t);for(let i of Object.keys(e))if(!r.has(i))throw h("schema.deprecatedField",`${n}.${i}`)}function ft(e,t,n){if(t in e&&e[t]!=null&&(typeof e[t]!="number"||!Number.isFinite(e[t])))throw h("schema.invalidType",`${n}.${t}`)}function Wd(e,t,n){if(!(t in e)||typeof e[t]!="number"||!Number.isFinite(e[t]))throw h("schema.invalidValue",`${n}.${t}`)}function Be(e,t){let n=I(e);if(!n)throw h("schema.invalidType",t);return n}function h(e,t){let n=new Error(`${e}: ${t}`);return Object.assign(n,{code:e,path:t}),n}function I(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function A(e){return typeof e=="string"&&e.length>0&&e===e.trim()?e:null}function Ei(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Ti(e,t,n={}){Ii(e);let r=t;Object.prototype.hasOwnProperty.call(r,"staticShadows")&&r.staticShadows!=null&&nt(r.staticShadows,"$.staticShadows");let{scene:i,...o}=t,a=structuredClone(o),s=U(i)?i:void 0,l=si(e),d={...l,compilerId:xi,compilerVersion:Pi,compiledAt:new Date().toISOString()};a.schemaVersion=3,a.meta={...a.meta??{},generatedFrom:d};let u=s?.rootId||"root",c=e.scene.gameObjects.filter(x=>x.id!==u),m=Zd(e),p={...e,scene:{...e.scene,materialAssets:m}},g=c.flatMap(x=>ll(x,l,p,n)),b=g.map(Di);Jd(u,b),Yd(u,b);let S={rootId:u,assets:p.assets.filter(tl).map(nl),nodes:b,materialAssets:m,materials:structuredClone(s?.materials??[]),textures:structuredClone(s?.textures??[])};return a.scene=S,a.plugins=ul(a.plugins,n.shadowMapExperimentConfig,p.scene.shadowMapExperiment,g,u,l.revision),En(a),{sceneConfig:a,summary:{assetCount:S.assets.length,gameObjectCount:e.scene.gameObjects.length,nodeCount:S.nodes.length}}}function Di(e){if(!Object.prototype.hasOwnProperty.call(e,"shadowMapExperiment")&&!Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentInferredUpdateClass")&&!Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentAuthoredShadow"))return e;let{shadowMapExperiment:t,shadowMapExperimentInferredUpdateClass:n,shadowMapExperimentAuthoredShadow:r,...i}=e;return i}function Jd(e,t){let n=new Set([e]);for(let r=0;r<t.length;r+=1){let i=t[r].id;if(n.has(i)){let o=new Error(`schema.invalidReference: $.scene.nodes[${r}].id`);throw Object.assign(o,{code:"schema.invalidReference",path:`$.scene.nodes[${r}].id`,nodeId:i}),o}n.add(i)}}function Yd(e,t){let n=new Map(t.map(r=>[r.id,r]));for(let r=0;r<t.length;r+=1){let i=t[r];if(!(i.source?.component!=="PrefabMarker"||!("marker"in i)||!i.marker))for(let o of Xd(i.marker)){let a=n.get(o.target.id);if(o.target.id!==e&&(!a||a.source?.objectId===i.source.objectId))continue;let s=`$.scene.nodes[${r}].marker.${o.path}.id`,l=new Error(`schema.invalidReference: ${s}`);throw Object.assign(l,{code:"schema.invalidReference",path:s,nodeId:i.id,targetId:o.target.id}),l}}}function Xd(e){let t=[];return e.target&&t.push({path:"target",target:e.target}),e.geometry.kind==="point"&&e.geometry.target&&t.push({path:"geometry.target",target:e.geometry.target}),e.geometry.kind==="object-bounds"&&t.push({path:"geometry.target",target:e.geometry.target}),t}function Zd(e){let t=structuredClone(e.scene.materialAssets??[]),n=Gt(Qd(e,t));if(!n.ok)throw new Error(`editor_scene_material_assets_missing: ${n.missingMaterialAssetIds.join(", ")}`);return t}function Qd(e,t){let n={...e,scene:{...e.scene,materialAssets:t}};return{...n,scene:{...n.scene,gameObjects:[...n.scene.gameObjects.map(r=>{let i=_i(r,n);if(i)return{...r,overrides:i};if(!("overrides"in r))return r;let o={...r};return delete o.overrides,o}),...el(n)]}}}function el(e){let t=[];for(let n of e.scene.gameObjects){let r=st(e,n);!r.definition||!Ht(r.definition)||t.push(...Mi({editorDocument:e,prefabAsset:r.definition,hostGameObject:n,instanceOverrides:n.overrides,visitedPrefabIds:new Set}))}return t}function Mi(e){if(e.visitedPrefabIds.has(e.prefabAsset.id))return[];e.visitedPrefabIds.add(e.prefabAsset.id);let t=vi(Tn(e.prefabAsset),at(e.prefabAsset)??""),n=t.find(o=>o.id===at(e.prefabAsset));if(!n)return e.visitedPrefabIds.delete(e.prefabAsset.id),[];let r=Gi(t,e.prefabAsset),i=[];for(let o of t){if(o.kind==="prefabInstance"&&o.childPrefabId){let d=e.editorDocument.assets.find(u=>u.id===o.childPrefabId);if(d&&Ht(d)){i.push(...Mi({editorDocument:e.editorDocument,prefabAsset:d,hostGameObject:e.hostGameObject,instanceOverrides:o.overrides,visitedPrefabIds:new Set(e.visitedPrefabIds)}));continue}continue}let a=Tl(e.hostGameObject,o);if(!a)continue;let s=o.kind==="model"&&o.sourceAssetId?e.editorDocument.assets.find(d=>d.id===o.sourceAssetId):void 0,l=Ln({hostGameObject:a,prefabAsset:e.prefabAsset,rootNode:n,node:o,asset:s,editorDocument:e.editorDocument,instanceOverrides:o.id===r?e.instanceOverrides:void 0});l&&i.push({...a,overrides:l})}return e.visitedPrefabIds.delete(e.prefabAsset.id),i}function tl(e){return e.type==="glb"||e.type==="texture"}function nl(e){let t=ol(e),n=e.type==="glb"?al(e):[],r=il(e.external),i=rl(e.defaults);return{id:e.id,type:e.type,...e.guid?{guid:e.guid}:{},...t?{url:t}:{},...typeof e.warmupCount=="number"&&Number.isInteger(e.warmupCount)&&e.warmupCount>=0?{warmupCount:e.warmupCount}:{},...typeof e.singleton=="boolean"?{singleton:e.singleton}:{},...typeof e.materialMode=="string"?{materialMode:e.materialMode}:{},...i!==void 0?{defaults:i}:{},...r?{external:r}:{},...n.length>0?{materialSlots:n}:{}}}function rl(e){if(!e)return;let t=structuredClone(e);return U(t)?(delete t.shadowMapExperiment,Object.keys(t).length>0?t:void 0):t}function il(e){let t=U(e)?e:void 0,n=pe(t?.platformAssetId),r=pe(t?.assetUrl);if(!(!n&&!r))return{...n?{platformAssetId:n}:{},...r?{assetUrl:r}:{}}}function ol(e){let t=U(e.metadata)?e.metadata:void 0,n=U(e.external)?e.external:void 0;return pe(t?.url)??pe(n?.assetUrl)??void 0}function al(e){let t=U(e.metadata)?e.metadata:void 0,n=Array.isArray(t?.materialSlots)?t.materialSlots:[],r=sl(t?.assetAnalysis);return n.flatMap(i=>{if(!U(i))return[];let o=pe(i.slotId);if(!o)return[];let a=pe(i.label),s=(Array.isArray(i.sourceSurfaces)?i.sourceSurfaces:[]).flatMap(l=>{if(!U(l))return[];let d=pe(l.ownerNodePath),u=mt(l.meshIndex),c=mt(l.primitiveIndex);if(!d||u==null||c==null)return[];let m=mt(l.nodeIndex),p=dl(Array.isArray(l.nodeIndexPath)?l.nodeIndexPath:[]),g=mt(l.sourceMaterialIndex),b=pe(l.sourceMeshName)??r.get(u);return[{ownerNodePath:d,...m==null?{}:{nodeIndex:m},...p.length>0?{nodeIndexPath:p}:{},meshIndex:u,primitiveIndex:c,...g==null?{}:{sourceMaterialIndex:g},...b?{sourceMeshName:b}:{}}]});return s.length===0?[]:[{slotId:o,...a?{label:a}:{},sourceSurfaces:s}]})}function sl(e){let t=U(e)?e:void 0,n=Array.isArray(t?.meshes)?t.meshes:[];return new Map(n.flatMap(r=>{if(!U(r))return[];let i=mt(r.meshIndex),o=pe(r.name);return i==null||!o?[]:[[i,o]]}))}function dl(e){return[...new Set(e.filter(t=>typeof t=="number"&&Number.isInteger(t)&&t>=0))]}function mt(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0?e:void 0}function ll(e,t,n,r){let i=st(n,e);return(i.definition&&Ht(i.definition)?bl(e,i.definition,t,n,new Set):[cl(e,t,n,r)]).map(a=>{let s=a.kind==="instance"?n.assets.find(d=>d.id===a.instance.assetId):void 0,l=r.inferShadowMapExperimentUpdateClass?.({gameObject:e,runtimeNode:Di(a),...s?{asset:s}:{}})??gl(s);return{...a,shadowMapExperimentInferredUpdateClass:l,...Object.prototype.hasOwnProperty.call(a,"shadowMapExperimentAuthoredShadow")?{}:ml(a,n)}})}function cl(e,t,n,r={}){let i=An(e),o=ge(e),a=wn(e),s=Ml(e),l=Ce(e),d=_i(e,n),u=ti(e),c=pl(n,e),m={sourceId:t.sourceId,sourceType:t.sourceType,revision:t.revision,...e.guid?{objectGuid:e.guid}:{},objectId:e.id,component:o?"ModelRenderer":a?"ImageRenderer":s||l==="primitive"?"PrimitiveRenderer":l==="transform"?"Transform":"GameObject"},p={id:e.id,...e.name?{name:e.name}:{},...e.parentId?{parentId:e.parentId}:{},...e.active===!1?{enabled:!1}:{},...e.shadow?{shadow:structuredClone(e.shadow)}:{},...c?{shadowMapExperiment:structuredClone(c)}:{},...xl(n,e),...u?{rendering:u}:{},source:m,...i&&"position"in i?{transform:{position:i.position,rotation:i.rotation,...i.scale?{scale:i.scale}:{}}}:{}};if(l==="primitive")return{...p,kind:"primitive",primitive:{shape:s?.shape??"cube"},...d?{overrides:d}:{}};if(a)return{...p,kind:"image",image:{assetId:a.assetId,size:{width:a.size.width,height:a.size.height}},...d?{overrides:d}:{}};if(!o){if(l==="transform"){let g=El(e,r),b=g.transformType;delete g.transformType;let S=wi(b)??wi(e.transformType);return{...p,kind:"transform",...S?{transformType:S}:{},...e.camera?{camera:Rl(e.camera)}:{},...e.light?{light:ji(e.light)}:{},...e.marker?{marker:{label:e.name||e.id,...structuredClone(e.marker)}}:{},...g,...d?{overrides:d}:{}}}return{...p,kind:"group"}}return{...p,kind:"instance",instance:{assetId:o.assetId},...d?{overrides:d}:{}}}function ul(e,t,n,r,i,o){let a=(e??[]).filter(m=>m.pluginId!==mn);if(!t)return a;let s=n,l=r.find(m=>m.id===t.lightRef),d=l?.kind==="transform"&&l.light?.type==="directional"?l:void 0;if(!l&&t.enabled)throw new Error(`shadowMapExperiment.lightMissing:${t.lightRef}`);if(l&&!d&&t.enabled)throw new Error(`shadowMapExperiment.lightUnsupported:${t.lightRef}`);let u=d?.kind==="transform"&&d.light?.type==="directional"?[d.light.direction.x,d.light.direction.y,d.light.direction.z]:[0,-1,0],c=yr({revision:typeof o=="number"&&Number.isInteger(o)&&o>=0?o:0,scopeId:i,config:t,settings:s,lightDirection:u,objects:r.filter(m=>m.kind==="instance"||m.kind==="primitive").map(m=>({entityId:m.id,renderableIds:[m.id],...m.shadowMapExperiment?{override:m.shadowMapExperiment}:{},...fl(m.shadowMapExperimentAuthoredShadow),inferredUpdateClass:m.shadowMapExperimentInferredUpdateClass??"static"}))});return[...a,{pluginId:mn,schemaVersion:3,data:c}]}function fl(e){return{...e?.cast==="none"?{cast:!1}:e?.cast==="enabled"?{cast:!0}:{},...e?.receive==="none"?{receive:!1}:e?.receive==="enabled"?{receive:!0}:{}}}function ml(e,t){let n=e.kind==="instance"?t.assets.find(i=>i.id===e.instance.assetId):void 0,r=ki(Fn(n).shadow,e.shadow);return r?{shadowMapExperimentAuthoredShadow:r}:{}}function ki(...e){let t=ce(...e),n=t?.cast,r=t?.receive;return n||r?{...n?{cast:n}:{},...r?{receive:r}:{}}:void 0}function gl(e){let t=U(e?.metadata?.assetAnalysis)?e.metadata.assetAnalysis:void 0;if(!t)return"static";let n=Gn(t.skinCount),r=Gn(t.morphTargetCount);return n>0||r>0?"skinned":Gn(t.animationCount)>0?"dynamic":"static"}function Gn(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:0}function Kt(...e){for(let t=e.length-1;t>=0;t-=1)if(e[t])return e[t]}function pl(e,t){let n=ge(t),r=st(e,t),i=r.sourceAsset??(n?e.assets.find(o=>o.id===n.assetId):void 0);return Kt(Ci(i),r.definition?.prefab?.defaults?.shadowMapExperiment,t.shadowMapExperiment)}function Ci(e){if(!e||!U(e.defaults))return;let t=e.defaults.shadowMapExperiment;return U(t)?t:void 0}function bl(e,t,n,r,i){return Ri({prefabAsset:t,sourceRef:n,editorDocument:r,hostGameObject:e,rootRuntimeId:e.id,rootParentId:e.parentId,rootName:e.name??t.displayName??t.id,rootTransform:An(e)??void 0,rootActive:e.active,rootShadow:e.shadow,sceneInstanceShadow:e.shadow,rootShadowMapExperiment:e.shadowMapExperiment,instanceOverrides:e.overrides,propertyPathPrefix:`assets.${t.id}.prefab.nodes`,visitedPrefabIds:i})}function Ri(e){if(e.visitedPrefabIds.has(e.prefabAsset.id))return[_n({id:e.rootRuntimeId,name:e.rootName??e.prefabAsset.displayName??e.prefabAsset.id,parentId:e.rootParentId,transform:e.rootTransform,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:"PrefabCycle",propertyPath:e.propertyPathPrefix})];e.visitedPrefabIds.add(e.prefabAsset.id);let t=Tn(e.prefabAsset),n=at(e.prefabAsset),r=n?t.find(d=>d.id===n):null;if(!r||t.length===0)return e.visitedPrefabIds.delete(e.prefabAsset.id),[_n({id:e.rootRuntimeId,name:e.rootName??e.prefabAsset.displayName??e.prefabAsset.id,parentId:e.rootParentId,transform:e.rootTransform,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:"Prefab",propertyPath:e.propertyPathPrefix})];let i={instanceId:e.rootRuntimeId,rootNodeId:r.id},o=d=>Cn(i,d.id),a=vi(t,r.id),s=Gi(a,e.prefabAsset),l=[];for(let d of a){let u=o(d),c=d.id===r.id?e.rootParentId:o(t.find(g=>g.id===d.parentId)??r),m=hl(t,d),p=Sl(t,d);if(d.kind==="prefabInstance"&&d.childPrefabId){let g=e.editorDocument.assets.find(b=>b.id===d.childPrefabId);if(g&&Ht(g)){let b=d.id===r.id;l.push(...Ri({prefabAsset:g,sourceRef:e.sourceRef,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject,rootRuntimeId:u,rootParentId:c,rootName:b?e.rootName??d.name??g.displayName??g.id:d.name??g.displayName??g.id,rootTransform:b?e.rootTransform??d.transform:d.transform,rootActive:b?e.rootActive??d.defaults?.active??e.prefabAsset.prefab?.defaults?.active:d.defaults?.active,rootShadow:b?ce(e.prefabAsset.prefab?.defaults?.shadow,d.defaults?.shadow,e.rootShadow):d.defaults?.shadow,inheritedShadowParticipationLayers:[e.prefabAsset.prefab?.defaults?.shadow,...p,d.defaults?.shadow,...e.inheritedShadowParticipationLayers??[]],sceneInstanceShadow:e.sceneInstanceShadow,inheritedShadowMapExperiment:Kt(e.prefabAsset.prefab?.defaults?.shadowMapExperiment,e.inheritedShadowMapExperiment,m,d.defaults?.shadowMapExperiment),rootShadowMapExperiment:e.rootShadowMapExperiment,instanceOverrides:b?gt(gt(de(e.prefabAsset.prefab?.overrides),de(d.overrides)),de(e.instanceOverrides)):d.overrides,propertyPathPrefix:`${e.propertyPathPrefix}.${d.id}.childPrefab.nodes`,visitedPrefabIds:new Set(e.visitedPrefabIds)}));continue}l.push(_n({id:u,name:d.name??d.childPrefabId??"Prefab Instance",parentId:c,transform:d.transform,sourceRef:e.sourceRef,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject,component:"UnsupportedPrefabInstance",propertyPath:`${e.propertyPathPrefix}.${d.id}`}));continue}l.push(yl({node:d,rootNode:r,identityScope:i,prefabAsset:e.prefabAsset,runtimeId:u,parentId:c,sourceRef:e.sourceRef,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject,rootRuntimeName:e.rootName,rootRuntimeTransform:e.rootTransform,rootRuntimeActive:e.rootActive,rootRuntimeShadow:e.rootShadow,inheritedShadowParticipationLayers:e.inheritedShadowParticipationLayers,compositionAncestorShadowParticipationLayers:p,sceneInstanceShadow:e.sceneInstanceShadow,inheritedShadowMapExperiment:e.inheritedShadowMapExperiment,compositionAncestorShadowMapExperiment:m,rootRuntimeShadowMapExperiment:e.rootShadowMapExperiment,instanceOverrides:d.id===s?e.instanceOverrides:void 0,propertyPath:`${e.propertyPathPrefix}.${d.id}`}))}return e.visitedPrefabIds.delete(e.prefabAsset.id),Il({compiledNodes:l,editorDocument:e.editorDocument,hostGameObject:e.hostGameObject})}function yl(e){let t=e.node.id===e.rootNode.id,n=t?e.rootRuntimeTransform??e.node.transform:e.node.transform,r=e.node.kind==="model"&&e.node.sourceAssetId?e.editorDocument.assets.find(o=>o.id===e.node.sourceAssetId):void 0,i=Ni({id:e.runtimeId,name:t?e.rootRuntimeName??e.node.name??e.prefabAsset.displayName??e.prefabAsset.id:e.node.name,parentId:e.parentId,transform:n,active:t?e.rootRuntimeActive??e.node.defaults?.active??e.prefabAsset.prefab?.defaults?.active:e.node.defaults?.active,shadow:t?ce(e.prefabAsset.prefab?.defaults?.shadow,e.node.defaults?.shadow,e.rootRuntimeShadow):ce(e.prefabAsset.prefab?.defaults?.shadow,e.node.defaults?.shadow),shadowMapExperimentAuthoredShadow:ki(Fn(r).shadow,e.prefabAsset.prefab?.defaults?.shadow,...e.compositionAncestorShadowParticipationLayers??[],e.node.defaults?.shadow,...e.inheritedShadowParticipationLayers??[],e.sceneInstanceShadow)??{},shadowMapExperiment:Kt(Ci(r),e.prefabAsset.prefab?.defaults?.shadowMapExperiment,e.inheritedShadowMapExperiment,e.compositionAncestorShadowMapExperiment,e.node.defaults?.shadowMapExperiment,e.rootRuntimeShadowMapExperiment),sourceAsset:r,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:e.node.kind==="model"?"PrefabModel":e.node.kind==="primitive"?"PrefabPrimitive":e.node.kind==="light"?"PrefabLight":e.node.kind==="marker"?"PrefabMarker":"PrefabNode",propertyPath:e.propertyPath});if(e.node.kind==="model"&&e.node.sourceAssetId){let o=Ln({hostGameObject:e.hostGameObject,prefabAsset:e.prefabAsset,rootNode:e.rootNode,node:e.node,asset:r,editorDocument:e.editorDocument,instanceOverrides:e.instanceOverrides});return{...i,kind:"instance",instance:{assetId:e.node.sourceAssetId},...o?{overrides:o}:{}}}if(e.node.kind==="primitive"){let o=Ln({hostGameObject:e.hostGameObject,prefabAsset:e.prefabAsset,rootNode:e.rootNode,node:e.node,asset:void 0,editorDocument:e.editorDocument,instanceOverrides:e.instanceOverrides});return{...i,kind:"primitive",primitive:{shape:e.node.primitive?.shape??"cube"},...o?{overrides:o}:{}}}return e.node.kind==="light"?{...i,kind:"transform",transformType:"light",...e.node.light?{light:ji(e.node.light)}:{}}:e.node.kind==="marker"&&e.node.marker?{...i,kind:"transform",marker:{label:e.node.name??e.node.id,...ri(e.node.marker,e.identityScope)}}:{...i,kind:"group"}}function hl(e,t){let n=new Map(e.map(o=>[o.id,o])),r=[],i=t.parentId?n.get(t.parentId):void 0;for(;i;)r.unshift(i),i=i.parentId?n.get(i.parentId):void 0;return Kt(...r.map(o=>o.defaults?.shadowMapExperiment))}function Sl(e,t){let n=new Map(e.map(o=>[o.id,o])),r=[],i=t.parentId?n.get(t.parentId):void 0;for(;i;)r.unshift(i),i=i.parentId?n.get(i.parentId):void 0;return r.map(o=>o.defaults?.shadow)}function _n(e){return{...Ni({id:e.id,name:e.name,parentId:e.parentId,transform:e.transform,editorDocument:e.editorDocument,sourceRef:e.sourceRef,hostGameObject:e.hostGameObject,component:e.component,propertyPath:e.propertyPath}),kind:"group"}}function El(e,t){let n=t.readCustomTransformRuntimeData?.(e);return n&&typeof n=="object"&&!Array.isArray(n)?structuredClone(n):{}}function Ni(e){return{id:e.id,...e.name?{name:e.name}:{},...e.parentId?{parentId:e.parentId}:{},...e.active===!1?{enabled:!1}:{},...e.shadow?{shadow:structuredClone(e.shadow)}:{},...Object.prototype.hasOwnProperty.call(e,"shadowMapExperimentAuthoredShadow")?{shadowMapExperimentAuthoredShadow:structuredClone(e.shadowMapExperimentAuthoredShadow??{})}:{},...e.shadowMapExperiment?{shadowMapExperiment:structuredClone(e.shadowMapExperiment)}:{},...Pl(e),source:{sourceId:e.sourceRef.sourceId,sourceType:e.sourceRef.sourceType,revision:e.sourceRef.revision,...e.hostGameObject.guid?{objectGuid:e.hostGameObject.guid}:{},objectId:e.hostGameObject.id,component:e.component,propertyPath:e.propertyPath},...e.transform&&"position"in e.transform?{transform:{position:e.transform.position,rotation:e.transform.rotation,...e.transform.scale?{scale:e.transform.scale}:{}}}:{}}}function xl(e,t){let n=Bt({document:e,casterId:t.id,caster:t});return Un(n,!!t.shadow)?{shadowPlan:n}:{}}function Pl(e){if(!e.editorDocument)return{};let t=re(e.shadow),n=Fn(e.sourceAsset),r=!!e.shadow||!!t.shadow||!!n.shadow;if(!r&&t.diagnostics.length===0&&n.diagnostics.length===0)return{};let i=Bt({document:e.editorDocument,casterId:e.hostGameObject.id,caster:e.hostGameObject,settings:{source:n.shadow,instance:t.shadow}}),o={...i,casterId:e.id,diagnostics:[...n.diagnostics,...t.diagnostics,...i.diagnostics].map(a=>({...a,casterId:a.casterId===e.hostGameObject.id||!a.casterId?e.id:a.casterId}))};return Un(o,r)?{shadowPlan:o}:{}}function Fn(e){if(!e)return{diagnostics:[]};let t=e?.defaults&&typeof e.defaults=="object"&&!Array.isArray(e.defaults)?e.defaults:void 0;if(!t)return{diagnostics:[]};let n=re(t.shadow);return{shadow:n.shadow,diagnostics:n.diagnostics.map(r=>({...r,details:{...r.details??{},source:"asset",assetId:e.id}}))}}function Un(e,t){return t||e.backend!=="none"||e.diagnostics.length>0}function Il(e){if(e.compiledNodes.length===0)return e.compiledNodes;let t=new Set(e.compiledNodes.map(a=>a.id)),n=e.compiledNodes.map(a=>Al(a)),r={...e.editorDocument,scene:{...e.editorDocument.scene,gameObjects:[...e.editorDocument.scene.gameObjects.filter(a=>!t.has(a.id)),...n]}},i=e.compiledNodes.filter(a=>a.shadow?.receive==="enabled").map(a=>a.id),o=n.find(a=>a.light?.type==="directional"&&a.active!==!1)?.id;return e.compiledNodes.map((a,s)=>{let l=n[s],d=Bt({document:r,casterId:a.id,caster:l,explicitReceiverIds:i,...o?{defaultLightId:o}:{}}),u=!!a.shadow;if(!Un(d,u)){if(!a.shadowPlan)return a;let c={...a};return delete c.shadowPlan,c}return{...a,shadowPlan:d}})}function Al(e){let t=[];return e.transform&&t.push({type:"Transform",position:e.transform.position,rotation:e.transform.rotation,...e.transform.scale?{scale:e.transform.scale}:{}}),e.kind==="instance"&&t.push({type:"ModelRenderer",assetId:e.instance.assetId}),e.kind==="image"&&t.push({type:"ImageRenderer",assetId:e.image.assetId,size:structuredClone(e.image.size)}),{id:e.id,...e.name?{name:e.name}:{},kind:e.kind==="image"?"transform":e.kind,...e.parentId?{parentId:e.parentId}:{},...e.enabled===!1?{active:!1}:{},...e.shadow?{shadow:structuredClone(e.shadow)}:{},...e.kind==="primitive"?{primitive:{shape:e.primitive.shape}}:{},...e.kind==="transform"&&e.transformType?{transformType:e.transformType}:{},...e.kind==="transform"&&e.light?{light:e.light}:{},...e.kind==="transform"&&e.camera?{camera:e.camera}:{},...e.kind==="transform"&&e.marker?{marker:structuredClone(e.marker)}:{},components:t}}function Ln(e){let t=e.node.kind==="model"&&e.node.sourceAssetId?$i(e.hostGameObject,e.node,e.node.sourceAssetId):e.hostGameObject,n=e.asset?.id,r=Dl([jn(de(e.prefabAsset.prefab?.overrides),e.prefabAsset.prefab?.sourceAssetId,e.asset),jn(de(e.rootNode.overrides),e.rootNode.kind==="model"?e.rootNode.sourceAssetId:e.prefabAsset.prefab?.sourceAssetId,e.asset),e.node.id===e.rootNode.id?void 0:jn(de(e.node.overrides),e.node.kind==="model"?e.node.sourceAssetId:n,e.asset)]),i=de(e.instanceOverrides);return Oi(gt(r,i),e.asset)}function jn(e,t,n){return Oi(e,t&&t===n?.id?n:void 0)}function Oi(e,t){if(!e?.materialSlotBindings)return e;let n=U(t?.metadata)&&Array.isArray(t.metadata.materialSlots)?t.metadata.materialSlots:[],r=new Set(n.flatMap(a=>{let s=U(a)&&typeof a.slotId=="string"?a.slotId.trim():"";return s?[s]:[]})),i=Object.fromEntries(Object.entries(e.materialSlotBindings).filter(([a])=>r.has(a))),o=structuredClone(e);return Object.keys(i).length>0?o.materialSlotBindings=i:delete o.materialSlotBindings,Object.keys(o).length>0?o:void 0}function $i(e,t,n){return{id:`${e.id}:${t.id}`,...t.name?{name:t.name}:{},kind:"instance",components:[...t.transform?[t.transform]:[],{type:"ModelRenderer",assetId:n}]}}function wl(e,t){return{id:`${e.id}:${t.id}`,...t.name?{name:t.name}:{},kind:"primitive",primitive:{shape:t.primitive?.shape??"cube"},components:[...t.transform?[t.transform]:[]]}}function Tl(e,t){return t.kind==="model"&&t.sourceAssetId?$i(e,t,t.sourceAssetId):t.kind==="primitive"?wl(e,t):null}function Dl(e){let t;for(let n of e){let r=de(n);r&&(t=gt(t,r))}return t}function vi(e,t){let n=new Map;for(let s of e){if(!s.parentId)continue;let l=n.get(s.parentId)??[];l.push(s),n.set(s.parentId,l)}let r=[],i=new Set,o=s=>{if(!i.has(s.id)){i.add(s.id),r.push(s);for(let l of n.get(s.id)??[])o(l)}},a=e.find(s=>s.id===t);a&&o(a);for(let s of e)o(s);return r}function Gi(e,t){let n=t.prefab?.sourceAssetId;return e.find(r=>r.kind==="model"&&r.sourceAssetId===n)?.id??e.find(r=>r.kind==="model")?.id}function Ht(e){return _t(e)&&e.prefab.compositionVersion===jt&&Array.isArray(e.prefab.nodes)&&e.prefab.nodes.length>0&&!!at(e)}function Ml(e){return e.primitive??null}function _i(e,t){let n=Ce(e);if(n!=="instance"&&n!=="transform"&&n!=="primitive")return;let r=ge(e),i=r?t.assets.find(o=>o.id===r.assetId):void 0;return kl(e,t,i)}function kl(e,t,n){let r=de(e.overrides),i=st(t,e),o=de(i.definition?.prefab?.overrides);return gt(o,r)}function gt(e,t){let n=ei(e,t);for(let r of[e,t])if(r)for(let[i,o]of Object.entries(r))Cl(i)||o===void 0||(n??={},n[i]=structuredClone(o));return n&&Object.keys(n).length>0?n:void 0}function de(e){if(!U(e))return;let t=structuredClone(e);return Object.keys(t).length>0?t:void 0}function Cl(e){return e==="materialBinding"||e==="materialSlotBindings"}function U(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function pe(e){return(typeof e=="string"?e.trim():"")||void 0}function wi(e){return typeof e=="string"?e:void 0}function Rl(e){let t=structuredClone(e);return delete t.inspectorLanguage,t}function ji(e){return e.type==="directional"?ve({schemaVersion:1,type:"directional",intensity:e.intensity,direction:Je(e.direction),diffuseColor:e.diffuseColor??di.diffuseColor}):ve({schemaVersion:1,type:"hemispheric",intensity:e.intensity,diffuseColor:e.diffuseColor??Rn.diffuseColor,groundColor:e.groundColor??Rn.groundColor})}function Nl(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Li(e){let t=Nl(e);if(t==null)return null;let n=t%360;n>180&&(n-=360),n<=-180&&(n+=360);let r=Ol(n);return Object.is(r,-0)?0:r}function Ol(e){return Math.round(e*1e3)/1e3}var $l=new Set(["leftToRight","rightToLeft","bottomToTop","topToBottom"]);function zi(e){let t=xn(e),n={uiKind:e.uiKind,size:{width:e.size.width,depth:e.size.depth},layers:e.layers.map((r,i)=>vl(r,i)),rendering:{textureWidth:t.width,textureHeight:t.height}};return e.aspectSourceLayerId&&(n.aspectSourceLayerId=e.aspectSourceLayerId),typeof e.lockAspectToBorder=="boolean"&&(n.lockAspectToBorder=e.lockAspectToBorder),e.mask&&(n.mask={...typeof e.mask.enabled=="boolean"?{enabled:e.mask.enabled}:{},...e.mask.source==="roundedRect"||e.mask.source==="borderAlpha"||e.mask.source==="texture"?{source:e.mask.source}:{},...e.mask.textureId?{textureId:e.mask.textureId}:{},...typeof e.mask.cornerRadius=="number"&&Number.isFinite(e.mask.cornerRadius)?{cornerRadius:e.mask.cornerRadius}:{},...typeof e.mask.padding=="number"&&Number.isFinite(e.mask.padding)?{padding:e.mask.padding}:{}}),e.rendering&&(n.rendering={...n.rendering,...typeof e.rendering.alphaIndex=="number"&&Number.isFinite(e.rendering.alphaIndex)?{alphaIndex:e.rendering.alphaIndex}:{},...typeof e.rendering.diffuseTextureLevel=="number"&&Number.isFinite(e.rendering.diffuseTextureLevel)?{diffuseTextureLevel:e.rendering.diffuseTextureLevel}:{},...typeof e.rendering.emissiveTextureLevel=="number"&&Number.isFinite(e.rendering.emissiveTextureLevel)?{emissiveTextureLevel:e.rendering.emissiveTextureLevel}:{}}),n}function vl(e,t){let n=Li(e.rotationDeg??0)??0,r={id:e.id,role:e.role,zOrder:typeof e.zOrder=="number"&&Number.isFinite(e.zOrder)?e.zOrder:t,rect:Gl(e.rect),...n!==0?{rotationDeg:n}:{},...typeof e.enabled=="boolean"?{enabled:e.enabled}:{},...typeof e.opacity=="number"&&Number.isFinite(e.opacity)?{opacity:e.opacity}:{}};return e.kind==="texture"?{...r,kind:"texture",...e.textureId?{textureId:e.textureId}:{},...e.tint?{tint:Ve(e.tint)}:{},...e.imageFit?{imageFit:e.imageFit}:{}}:e.kind==="textureProgress"?{...r,kind:"textureProgress",...e.textureId?{textureId:e.textureId}:{},value:Ui(e.value),...e.tint?{tint:Ve(e.tint)}:{},...e.imageFit?{imageFit:e.imageFit}:{},...Fi(e.direction)?{direction:e.direction}:{}}:e.kind==="color"?{...r,kind:"color",color:Ve(e.color)}:e.kind==="progress"?{...r,kind:"progress",value:Ui(e.value??0),color:Ve(e.color),...Fi(e.direction)?{direction:e.direction}:{}}:{...r,kind:"text",text:{value:e.text.value,color:Ve(e.text.color),...e.text.fontFamily?{fontFamily:e.text.fontFamily}:{},...typeof e.text.fontSize=="number"&&Number.isFinite(e.text.fontSize)?{fontSize:e.text.fontSize}:{},...e.text.fontWeight!=null?{fontWeight:String(e.text.fontWeight)}:{},...e.text.strokeColor?{strokeColor:Ve(e.text.strokeColor)}:{},...typeof e.text.strokeWidth=="number"&&Number.isFinite(e.text.strokeWidth)?{strokeWidth:e.text.strokeWidth}:{},...e.text.align==="left"||e.text.align==="center"||e.text.align==="right"?{align:e.text.align}:{},...e.text.baseline==="top"||e.text.baseline==="middle"||e.text.baseline==="bottom"?{baseline:e.text.baseline}:{}}}}function Gl(e){return{x:e.x,z:e.z,width:e.width,depth:e.depth}}function Ve(e){return{r:e.r,g:e.g,b:e.b,...typeof e.a=="number"?{a:e.a}:{}}}function Fi(e){return typeof e=="string"&&$l.has(e)}function Ui(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):0}var Bi=["model","texture","image","sound"],zn=[".glb",".gltf"],Vi=[".png",".jpg",".jpeg",".webp"],_l=[".env",".hdr",".dds",".ktx",".ktx2"],Bn=[...Vi,..._l],Vn=[".mp3",".wav",".ogg",".flac",".aac",".m4a"],Kn=[...zn,...Bn,...Vn];function jl(e){return String(e??"").trim().toLowerCase().replace(/-/g,"")}function Hn(e,t){let n=jl(t);return`${e==="model"?"asset":e==="texture"?"texture":e==="sound"?"sound":"image"}_${n}`}function Wn(e){let i=String(e??"").trim().split(/[^a-zA-Z0-9_$]+/).filter(Boolean).map((o,a)=>a===0?o:`${o.charAt(0).toUpperCase()}${o.slice(1)}`).join("").replace(/[^a-zA-Z0-9_$]/g,"")||"assetUrl";return/^[a-zA-Z_$]/.test(i)?i:`asset${i}`}function qn(e,t=""){let n=String(e??"").trim().toLowerCase();if(n==="glb"||n==="gltf"||n==="model")return"model";if(n==="groundtexture"||n==="ground-texture"||n==="texture")return"texture";if(n==="ui"||n==="image"||n==="img")return"image";if(n==="audio"||n==="sound")return"sound";let r=Ll(t);return zn.includes(r)?"model":Vn.includes(r)?"sound":Bn.includes(r)?"texture":null}function Ll(e){let t=e.split(/[?#]/,1)[0]??"",n=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\")),r=t.slice(n+1),i=r.lastIndexOf(".");return i>=0?r.slice(i).toLowerCase():""}function Ki(e){let t=String(e??"").trim(),n=t.toLowerCase();for(let r of[...Kn].sort((i,o)=>o.length-i.length))if(n.endsWith(r)){t=t.slice(0,-r.length);break}return t}function Hi(e,t){return String(e??"").trim()||Ki(t)||"Asset"}function Wi(e,t){return Ki(e||t).trim().toLowerCase().normalize("NFKD").replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").replace(/_{2,}/g,"_")||null}function qi(e){return e==="model"?zn:e==="sound"?Vn:e==="texture"?Bn:e==="image"?Vi:[]}function Ji(e){let t=typeof e=="string"&&e.trim()?e.trim():void 0;if(!t)return;if(t.includes("\0"))throw new Error("external_asset_path_must_be_portable");let n=t.replace(/\\/g,"/");if(n.startsWith("/")||/^[a-z]:\//i.test(n)||/^[a-z][a-z0-9+.-]*:/i.test(n))throw new Error("external_asset_path_must_be_portable");let r=[];for(let i of n.split("/"))if(!(!i||i===".")){if(i==="..")throw new Error("external_asset_path_must_be_portable");r.push(i)}if(r.length===0)throw new Error("external_asset_path_must_be_portable");return r.join("/")}function Wt(e,t={}){let n=t.generatedBy??"scripts/register-asset.mjs",r=t.codeKeyPolicy??"legacy",i=e.filter(d=>d.codeKey);if(r==="disabled"&&i.length>0){let d=i[0];throw Object.assign(new Error("manifest_code_key_disabled"),{name:"PlayableEditorAssetCatalogGenerationError",details:{codeKeyPolicy:r,assetId:d.assetId,codeKey:d.codeKey}})}let o=e.map(d=>`import ${Wn(d.assetId)} from ${JSON.stringify(`${d.relativePath}?url`)};`).join(`
|
|
4
|
+
`),a=e.map(d=>{let u=pn(d.relativePath);if(!u)throw new Error(`Generated asset catalog entry has no file extension: ${d.assetId}`);if(!bn(u))throw new Error(`Generated asset catalog entry has unsupported format: ${d.assetId} (${u})`);let c=[`guid: ${JSON.stringify(d.guid)}`,`assetId: ${JSON.stringify(d.assetId)}`,`kind: ${JSON.stringify(d.kind)}`,`displayName: ${JSON.stringify(d.displayName)}`,`url: ${Wn(d.assetId)}`,`format: ${JSON.stringify(u)}`,`relativePath: ${JSON.stringify(d.relativePath)}`,d.originalFileName?`originalFileName: ${JSON.stringify(d.originalFileName)}`:"",d.codeKey?`codeKey: ${JSON.stringify(d.codeKey)}`:"",d.category?`category: ${JSON.stringify(d.category)}`:"",typeof d.placeable=="boolean"?`placeable: ${JSON.stringify(d.placeable)}`:"",typeof d.warmupCount=="number"?`warmupCount: ${JSON.stringify(d.warmupCount)}`:"",typeof d.singleton=="boolean"?`singleton: ${JSON.stringify(d.singleton)}`:"",d.materialMode?`materialMode: ${JSON.stringify(d.materialMode)}`:"",d.defaults?`defaults: ${JSON.stringify(d.defaults)}`:"",d.contentHash?`contentHash: ${JSON.stringify(d.contentHash)}`:"",typeof d.byteSize=="number"?`byteSize: ${JSON.stringify(d.byteSize)}`:"",d.external?`external: ${JSON.stringify(d.external)}`:"",d.metadata?`metadata: ${JSON.stringify(d.metadata)}`:"",d.createdAt?`createdAt: ${JSON.stringify(d.createdAt)}`:"",d.updatedAt?`updatedAt: ${JSON.stringify(d.updatedAt)}`:""].filter(Boolean).join(", ");return` ${JSON.stringify(d.assetId)}: { ${c} },`}).join(`
|
|
5
|
+
`),s=new Map;for(let d of i)s.set(d.codeKey,d.assetId);let l=[...s].map(([d,u])=>` ${JSON.stringify(d)}: ${JSON.stringify(u)},`).join(`
|
|
6
|
+
`);return[`// This file is generated by ${n}.`,"// Do not edit by hand.","",o,"",'export type GeneratedAssetCatalogKind = "model" | "texture" | "image" | "sound";',"","export interface GeneratedAssetCatalogEntry {"," guid: string;"," assetId: string;"," kind: GeneratedAssetCatalogKind;"," displayName: string;"," url: string;"," format: `.${string}`;"," relativePath: string;"," originalFileName?: string;",...r==="legacy"?[" /** @deprecated Use the canonical assetId for persisted and runtime identity. */"," codeKey?: string;"]:[]," category?: string;"," placeable?: boolean;"," warmupCount?: number;"," singleton?: boolean;"," materialMode?: string;"," defaults?: Record<string, unknown>;"," contentHash?: string;"," byteSize?: number;"," external?: { platformAssetId?: string; assetPath?: string; assetUrl?: string };"," metadata?: Record<string, unknown>;"," createdAt?: string;"," updatedAt?: string;","}","","export const GENERATED_ASSET_CATALOG: Record<string, GeneratedAssetCatalogEntry> = {",a,"};","","export const GENERATED_ASSET_URL_MAP = Object.fromEntries("," Object.entries(GENERATED_ASSET_CATALOG).map(([assetId, entry]) => [assetId, entry.url]),",") as Record<string, string>;","","export const GENERATED_MODEL_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "model").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","export const GENERATED_TEXTURE_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "texture").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","export const GENERATED_IMAGE_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "image").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","export const GENERATED_SOUND_ASSET_URL_MAP = Object.fromEntries(",' Object.entries(GENERATED_ASSET_CATALOG).filter(([, entry]) => entry.kind === "sound").map(([assetId, entry]) => [assetId, entry.url]),',") as Record<string, string>;","","/** @deprecated Resolve assets by canonical assetId through GENERATED_ASSET_CATALOG. */","export const ASSET_IDS = {",l,"} as const satisfies Record<string, string>;"].join(`
|
|
7
|
+
`)+`
|
|
8
|
+
`}import ir from"node:crypto";import N from"node:fs/promises";import R from"node:path";import Jn from"node:fs/promises";import W from"node:path";var Yn=5;async function qt(e){let t={...e.existingMetadata??{},...e.payloadMetadata??{}},n=await Fl(e);if(n?(t.assetAnalysis=n,t.assetAnalysisStatus="complete"):(delete t.assetAnalysis,t.assetAnalysisStatus="unavailable"),e.kind==="texture"||e.kind==="image"){let i=cc(e.sourcePath,t);return i&&(t.textureUsage=i.usage,t.capabilities={...F(t.capabilities)?t.capabilities:{},materialTexture:i.materialTexture,environmentTexture:i.environmentTexture}),Object.keys(t).length>0?t:null}if(e.kind!=="model")return Object.keys(t).length>0?t:null;t.assetMetadataVersion=Yn;let r=await Ul(e.sourcePath,{assetGuid:e.guid,assetId:e.assetId,cwd:e.cwd,assetsDir:e.assetsDir,existingMaterialSlots:t.materialSlots});return r.length===0?delete t.materialSlots:t.materialSlots=r,Object.keys(t).length>0?t:null}async function Fl(e){return e.kind==="model"?zl(e.sourcePath):e.kind==="texture"||e.kind==="image"?Bl(e.sourcePath):null}async function Ul(e,t={}){try{let n=await Qi(e);return ec(n,{...t,sourcePath:e})}catch{return[]}}async function Qi(e){let t=W.extname(e).toLowerCase();if(t===".gltf")return JSON.parse(await Jn.readFile(e,"utf8"));if(t!==".glb")return null;let n=await Jn.readFile(e);if(n.length<20||n.toString("utf8",0,4)!=="glTF"||n.readUInt32LE(4)!==2||n.readUInt32LE(8)>n.length)return null;let o=12;for(;o+8<=n.length;){let a=n.readUInt32LE(o),s=n.readUInt32LE(o+4);if(o+=8,o+a>n.length)return null;if(s===1313821514){let l=n.toString("utf8",o,o+a).replace(/\0+$/g,"");return JSON.parse(l)}o+=a}return null}async function zl(e){try{let t=await Qi(e);if(!t||typeof t!="object")return null;let n=Array.isArray(t.scenes)?t.scenes:[],r=Array.isArray(t.nodes)?t.nodes:[],i=Array.isArray(t.meshes)?t.meshes:[],o=Array.isArray(t.materials)?t.materials:[],a=Array.isArray(t.textures)?t.textures:[],s=Array.isArray(t.images)?t.images:[],l=Array.isArray(t.animations)?t.animations:[],d=Array.isArray(t.skins)?t.skins:[],u=Array.isArray(t.accessors)?t.accessors:[],c=io(t),m=oo(r),p=new Set(c),g=i.reduce((w,M)=>w+(Array.isArray(M?.primitives)?M.primitives.length:0),0),b=i.reduce((w,M)=>w+(Array.isArray(M?.primitives)?M.primitives.reduce((O,z)=>O+(Array.isArray(z?.targets)?z.targets.length:0),0):0),0),S=ql({nodeCount:r.length,meshCount:i.length,primitiveCount:g,materialCount:o.length,textureCount:a.length,imageCount:s.length}),x=Jl({nodeCount:r.length,meshCount:i.length,primitiveCount:g,materialCount:o.length,textureCount:a.length,imageCount:s.length,animationCount:l.length,skinCount:d.length,morphTargetCount:b,complexity:S});return{kind:"gltf",format:W.extname(e).toLowerCase()===".gltf"?"gltf":"glb",summary:`${r.length} nodes, ${i.length} meshes, ${g} primitives, ${o.length} materials`,complexity:S,sceneCount:n.length,nodeCount:r.length,meshCount:i.length,primitiveCount:g,materialCount:o.length,textureCount:a.length,imageCount:s.length,animationCount:l.length,skinCount:d.length,morphTargetCount:b,nodes:Vl(r,i,o,u,m,p),meshes:Kl(i,o,u),materials:Hl(t),diagnostics:x}}catch{return null}}async function Bl(e){try{let t=await Jn.readFile(e),n=W.extname(e).toLowerCase(),r=n===".png"?Yl(t):n===".jpg"||n===".jpeg"?Xl(t):n===".webp"?Zl(t):null;if(!r)return null;let i=Ql(r);return{kind:"image",format:r.format,summary:`${r.width}x${r.height} ${r.mime}`,complexity:r.estimatedPixels>=4096*4096?"high":r.estimatedPixels>=2048*2048?"medium":"low",width:r.width,height:r.height,mime:r.mime,bitDepth:r.bitDepth,hasAlpha:r.hasAlpha,estimatedPixels:r.estimatedPixels,diagnostics:i}}catch{return null}}function Vl(e,t,n,r,i,o){return e.slice(0,100).map((a,s)=>{let l=Number.isInteger(a?.mesh)?a.mesh:-1,d=l>=0&&l<t.length?t[l]:null,u=Array.isArray(a?.children)?a.children.filter(p=>Number.isInteger(p)):[],c=ao(e,i,o,s),m={nodeIndex:s,nodeIndexPath:lo(i,s),...typeof a?.name=="string"&&a.name.trim()?{name:a.name.trim()}:{},...c?{ownerNodePath:c}:{},...u.length>0?{children:u}:{}};if(d){let p=eo(d,n,r);Object.assign(m,{meshIndex:l,...typeof d?.name=="string"&&d.name.trim()?{meshName:d.name.trim()}:{},primitiveCount:p.length,...p.length>0?{primitives:p}:{}})}return m})}function Kl(e,t,n){return e.slice(0,50).map((r,i)=>{let o=Array.isArray(r?.primitives)?r.primitives:[],a=[...new Set(o.map(l=>Number.isInteger(l?.material)?l.material:-1).filter(l=>l>=0))],s=eo(r,t,n);return{meshIndex:i,...typeof r?.name=="string"&&r.name.trim()?{name:r.name.trim()}:{},primitiveCount:o.length,...s.length>0?{primitives:s}:{},...a.length>0?{materialIndices:a}:{},...a.length>0?{materialNames:a.map(l=>{let d=t[l];return typeof d?.name=="string"?d.name.trim():""}).filter(Boolean)}:{}}})}function eo(e,t,n){let r=F(e)?e:{};return(Array.isArray(r.primitives)?r.primitives:[]).map((o,a)=>{let s=Number.isInteger(o?.material)?o.material:-1,l=s>=0?t[s]:null,d=typeof l?.name=="string"&&l.name.trim()?l.name.trim():"",u=co(o,n),c=uo(o,n);return{primitiveIndex:a,...Number.isInteger(o?.mode)?{mode:o.mode}:{},...s>=0?{sourceMaterialIndex:s}:{},...d?{materialName:d}:{},...Number.isFinite(u)?{triangleCount:u}:{},...c?{boundingBox:c}:{}}})}function Hl(e){return(Array.isArray(e?.materials)?e.materials:[]).slice(0,50).map((n,r)=>{let i=n?.pbrMetallicRoughness&&typeof n.pbrMetallicRoughness=="object"?n.pbrMetallicRoughness:{},o=Wl(n,i);return{sourceMaterialIndex:r,...typeof n?.name=="string"&&n.name.trim()?{materialName:n.name.trim()}:{},...Array.isArray(i.baseColorFactor)?{baseColorFactor:i.baseColorFactor.slice(0,4)}:{},metallicFactor:Number.isFinite(i.metallicFactor)?i.metallicFactor:1,roughnessFactor:Number.isFinite(i.roughnessFactor)?i.roughnessFactor:1,alphaMode:no(n?.alphaMode)??"opaque",...Number.isFinite(n?.alphaCutoff)?{alphaCutoff:n.alphaCutoff}:{},...o.length>0?{textureSlots:o}:{}}})}function Wl(e,t){let n=[];return pt(n,"baseColor",t?.baseColorTexture),pt(n,"metallicRoughness",t?.metallicRoughnessTexture),pt(n,"normal",e?.normalTexture),pt(n,"occlusion",e?.occlusionTexture),pt(n,"emissive",e?.emissiveTexture),n}function pt(e,t,n){!F(n)||!Number.isInteger(n.index)||e.push({slot:t,textureIndex:n.index,...Number.isFinite(n.texCoord)?{texCoord:n.texCoord}:{}})}function ql(e){return e.nodeCount>=300||e.meshCount>=250||e.primitiveCount>=300||e.materialCount>=200||e.textureCount>=80||e.imageCount>=80?"high":e.nodeCount>=100||e.meshCount>=80||e.primitiveCount>=100||e.materialCount>=50||e.textureCount>=24||e.imageCount>=24?"medium":"low"}function Jl(e){let t=[];return e.complexity==="high"&&t.push({severity:"warning",source:"asset",code:"asset.analysis.highComplexity",message:"GLTF asset is structurally complex; agent should place and inspect it before duplicating or using dense shadows.",details:{nodeCount:e.nodeCount,meshCount:e.meshCount,primitiveCount:e.primitiveCount,materialCount:e.materialCount,textureCount:e.textureCount,imageCount:e.imageCount}}),(e.animationCount>0||e.skinCount>0||e.morphTargetCount>0)&&t.push({severity:"info",source:"asset",code:"asset.analysis.riggedOrAnimated",message:"GLTF asset contains animation, skin, or morph target data.",details:{animationCount:e.animationCount,skinCount:e.skinCount,morphTargetCount:e.morphTargetCount}}),t}function Yl(e){if(e.length<33||e[0]!==137||e.toString("ascii",1,4)!=="PNG"||e[4]!==13||e[5]!==10||e[6]!==26||e[7]!==10||e.toString("ascii",12,16)!=="IHDR")return null;let n=e.readUInt32BE(16),r=e.readUInt32BE(20),i=e[24],o=e[25];return{format:"png",mime:"image/png",width:n,height:r,bitDepth:i,hasAlpha:o===4||o===6,estimatedPixels:n*r}}function Xl(e){if(e.length<4||e[0]!==255||e[1]!==216)return null;let t=2;for(;t+9<e.length;){if(e[t]!==255){t+=1;continue}let n=e[t+1],r=e.readUInt16BE(t+2);if(r<2)return null;if(n>=192&&n<=207&&![196,200,204].includes(n)&&t+8<e.length){let o=e[t+4],a=e.readUInt16BE(t+5),s=e.readUInt16BE(t+7);return{format:"jpeg",mime:"image/jpeg",width:s,height:a,bitDepth:o,hasAlpha:!1,estimatedPixels:s*a}}t+=2+r}return null}function Zl(e){if(e.length<30||e.toString("ascii",0,4)!=="RIFF"||e.toString("ascii",8,12)!=="WEBP")return null;let t=e.toString("ascii",12,16);if(t==="VP8X"&&e.length>=30){let n=e[20],r=Yi(e,24)+1,i=Yi(e,27)+1;return{format:"webp",mime:"image/webp",width:r,height:i,hasAlpha:(n&16)!==0,estimatedPixels:r*i}}if(t==="VP8 "&&e.length>=30){let n=e.readUInt16LE(26)&16383,r=e.readUInt16LE(28)&16383;return{format:"webp",mime:"image/webp",width:n,height:r,hasAlpha:!1,estimatedPixels:n*r}}if(t==="VP8L"&&e.length>=25&&e[20]===47){let n=e.readUInt32LE(21),r=(n&16383)+1,i=(n>>14&16383)+1;return{format:"webp",mime:"image/webp",width:r,height:i,hasAlpha:!0,estimatedPixels:r*i}}return null}function Yi(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16}function Ql(e){let t=[];return e.estimatedPixels>=4096*4096&&t.push({severity:"warning",source:"asset",code:"asset.analysis.largeImage",message:"Image asset is large; agent should inspect texture usage before assigning it broadly.",details:{width:e.width,height:e.height,estimatedPixels:e.estimatedPixels}}),t}function ec(e,t={}){if(!e||typeof e!="object")return[];let n=Array.isArray(e.nodes)?e.nodes:[],r=Array.isArray(e.meshes)?e.meshes:[],i=Array.isArray(e.materials)?e.materials:[],o=nc(e,t),a=io(e),s=oo(n),l=new Set(a),d=Array.isArray(e.accessors)?e.accessors:[],u=sc(t.existingMaterialSlots),c=[],m=new Map;for(let p=0;p<n.length;p+=1){let g=n[p],b=Number.isInteger(g?.mesh)?g.mesh:-1;if(b<0||b>=r.length)continue;let S=ao(n,s,l,p);if(!S)continue;let x=r[b],D=Array.isArray(x?.primitives)?x.primitives:[],w=fc(g,x,S),M=so(x),O=lo(s,p);for(let z=0;z<D.length;z+=1){let Pe=D[z],f=mc(Pe,i),v=ro({ownerNodePath:S,nodeIndex:p,meshIndex:b,primitiveIndex:z}),y=co(Pe,d),G=uo(Pe,d),J=D.length>1?`${w} / Primitive ${z}`:w,Y={ownerNodePath:S,nodeIndex:p,nodeIndexPath:O,meshIndex:b,primitiveIndex:z,...M?{sourceMeshName:M}:{},...f.index>=0?{sourceMaterialIndex:f.index}:{},...Number.isFinite(y)?{triangleCount:y}:{},...G?{boundingBox:G}:{}};if(f.index>=0){let j=m.get(f.index)??{label:J,materialName:f.name,sourceSurfaces:[]};j.sourceSurfaces.push(Y),m.set(f.index,j);continue}c.push({slotId:u.byExactSource.get(v)??dc({assetGuid:t.assetGuid,assetId:t.assetId,nodeIndex:p,meshIndex:b,primitiveIndex:D.length>1?z:void 0}),label:J,sourceSurfaces:[Y]})}}for(let[p,g]of m){let b=g.sourceSurfaces.sort(to);c.push({slotId:u.bySourceMaterialIndex.get(p)??lc({assetGuid:t.assetGuid,assetId:t.assetId,sourceMaterialIndex:p}),label:g.label,sourceSurfaces:b,...g.materialName?{materialName:g.materialName,materialNames:[g.materialName]}:{},...rc(o,[p])})}return c.sort(tc)}function tc(e,t){let n=Array.isArray(e.sourceSurfaces)?e.sourceSurfaces[0]:void 0,r=Array.isArray(t.sourceSurfaces)?t.sourceSurfaces[0]:void 0;return to(n,r)}function to(e,t){let n=String(e?.ownerNodePath??"").localeCompare(String(t?.ownerNodePath??""));if(n!==0)return n;let r=Number.isInteger(e?.nodeIndex)?e.nodeIndex:-1,i=Number.isInteger(t?.nodeIndex)?t.nodeIndex:-1;if(r!==i)return r-i;let o=Number.isInteger(e?.meshIndex)?e.meshIndex:-1,a=Number.isInteger(t?.meshIndex)?t.meshIndex:-1;if(o!==a)return o-a;let s=Number.isInteger(e?.primitiveIndex)?e.primitiveIndex:-1,l=Number.isInteger(t?.primitiveIndex)?t.primitiveIndex:-1;return s-l}function nc(e,t={}){let n=Array.isArray(e?.materials)?e.materials:[],r=[];for(let i=0;i<n.length;i+=1){let o=ic(e,i,t);o&&r.push(o)}return r}function rc(e,t){if(!t.length||!e.length)return{};let n=new Map(e.map(i=>[i.sourceMaterialIndex,i])),r=t.map(i=>n.get(i)).filter(Boolean);return r.length>0?{sourceMaterialProfiles:r}:{}}function ic(e,t,n={}){let r=Array.isArray(e?.materials)?e.materials[t]:null;if(!r||typeof r!="object")return null;let i={},o=[],a=r.pbrMetallicRoughness&&typeof r.pbrMetallicRoughness=="object"?r.pbrMetallicRoughness:{},s={},l=Array.isArray(a.baseColorFactor)?a.baseColorFactor:null,d=Xi(l);d&&(s.color=d);let u=bt(e,a.baseColorTexture,n,"baseColor.texture",s,"texture",o);Object.keys(s).length>0&&(i.baseColor={...s,brightness:1,saturation:1,contrast:1,hue:0});let c={};bt(e,r.normalTexture,n,"normal.texture",c,"texture",o),Number.isFinite(r.normalTexture?.scale)?c.strength=r.normalTexture.scale:c.texture&&(c.strength=1),Object.keys(c).length>0&&(i.normal=c),i.metallic=Number.isFinite(a.metallicFactor)?a.metallicFactor:1,i.roughness=Number.isFinite(a.roughnessFactor)?a.roughnessFactor:1;let m={};bt(e,a.metallicRoughnessTexture,n,"metallicRoughness.texture",m,"texture",o),Object.keys(m).length>0&&(i.metallicRoughness=m);let p={};bt(e,r.occlusionTexture,n,"occlusion.texture",p,"texture",o),Number.isFinite(r.occlusionTexture?.strength)?p.strength=r.occlusionTexture.strength:p.texture&&(p.strength=1),Object.keys(p).length>0&&(i.occlusion=p);let g={},b=Xi(Array.isArray(r.emissiveFactor)?r.emissiveFactor:null),S=b&&(b.r!==0||b.g!==0||b.b!==0);S&&(g.color=b),bt(e,r.emissiveTexture,n,"emission.texture",g,"texture",o),S&&(g.intensity=1),Object.keys(g).length>0&&(i.emission=g);let x={},D=no(r.alphaMode);if(D&&(x.mode=D),(D==="mask"||D==="blend")&&(l&&Number.isFinite(l[3])&&l[3]!==1&&(x.opacity=l[3]),Number.isFinite(r.alphaCutoff)?x.cutoff=r.alphaCutoff:D==="mask"&&(x.cutoff=.5),u.texture&&(x.texture=structuredClone(u.texture)),u.hint&&o.push({...u.hint,profilePath:"alpha.texture"})),Object.keys(x).length>0&&(i.alpha=x),Object.keys(i).length===0&&o.length===0)return null;let w=typeof r.name=="string"&&r.name.trim()?r.name.trim():"";return{sourceMaterialIndex:t,...w?{materialName:w}:{},...Object.keys(i).length>0?{profile:i}:{},...o.length>0?{textureHints:o}:{}}}function Xi(e){if(!Array.isArray(e)||e.length<3)return null;let[t,n,r]=e;return Number.isFinite(t)&&Number.isFinite(n)&&Number.isFinite(r)?{r:t,g:n,b:r}:null}function no(e){return e==="MASK"?"mask":e==="BLEND"?"blend":e==="OPAQUE"?"opaque":null}function bt(e,t,n,r,i,o,a){let s=oc(e,t,n,r);return s.texture&&(i[o]=s.texture),s.hint&&a.push(s.hint),s}function oc(e,t,n,r){let i=F(t)?t:{},o=Number.isInteger(i.index)?i.index:-1;if(o<0)return{};let a=Array.isArray(e?.textures)?e.textures:[],s=Array.isArray(e?.images)?e.images:[],l=a[o],d=ac(l),u=d.imageIndex,c=u>=0?s[u]:null,m=typeof c?.uri=="string"?c.uri.trim():"",p=/^data:/i.test(m),g={profilePath:r,textureIndex:o,...u>=0?{imageIndex:u}:{},...d.previewImageIndex>=0?{previewImageIndex:d.previewImageIndex}:{},...m&&!p?{uri:m}:{},...Number.isInteger(c?.bufferView)?{bufferView:c.bufferView}:{},...typeof c?.mimeType=="string"&&c.mimeType.trim()?{mimeType:c.mimeType.trim()}:{}};if(c?.bufferView!=null)return{hint:{...g,reason:"embedded-texture"}};if(!m)return{hint:{...g,reason:"missing-image-uri"}};if(p)return{hint:{...g,reason:"embedded-texture"}};if(/^https?:\/\//i.test(m)||m.startsWith("/"))return{texture:{url:m}};let b=m;try{b=decodeURIComponent(m)}catch{return{hint:{...g,reason:"unresolved-external-texture"}}}let S=W.dirname(String(n.sourcePath??"")),x=W.resolve(S,b),D=n.assetsDir?W.resolve(n.assetsDir):"",w=n.cwd?W.resolve(n.cwd):"",M=D?W.relative(D,x):"../";return D&&w&&M&&!M.startsWith("..")&&!W.isAbsolute(M)?{texture:{url:`/${W.relative(w,x).split(W.sep).join("/")}`},hint:{...g,reason:"external-texture"}}:{hint:{...g,reason:"external-texture"}}}function ac(e){let t=F(e)?e:{},n=F(t.extensions)?t.extensions:{},r=Number.isInteger(t.source)?t.source:-1,i=F(n.KHR_texture_basisu)?n.KHR_texture_basisu:{};if(Number.isInteger(i.source))return{imageIndex:i.source,previewImageIndex:r>=0&&r!==i.source?r:-1};let o=F(n.EXT_texture_webp)?n.EXT_texture_webp:{};return Number.isInteger(o.source)?{imageIndex:o.source,previewImageIndex:-1}:{imageIndex:r,previewImageIndex:-1}}function sc(e){let t=new Map,n=new Map;if(!Array.isArray(e))return{byExactSource:t,bySourceMaterialIndex:new Map};for(let i of e){if(!F(i))continue;let o=Array.isArray(i.sourceSurfaces)?i.sourceSurfaces:[],a=typeof i.slotId=="string"?i.slotId.trim():"";if(!a)continue;let s=new Set;for(let l of o){if(!F(l))continue;let d=typeof l.ownerNodePath=="string"?l.ownerNodePath.trim().replace(/^\/+|\/+$/g,""):"",u=Number.isInteger(l.nodeIndex)?l.nodeIndex:-1,c=Number.isInteger(l.meshIndex)?l.meshIndex:-1,m=Number.isInteger(l.primitiveIndex)?l.primitiveIndex:-1;o.length===1&&d&&u>=0&&c>=0&&m>=0&&t.set(ro({ownerNodePath:d,nodeIndex:u,meshIndex:c,primitiveIndex:m}),a),Number.isInteger(l.sourceMaterialIndex)&&l.sourceMaterialIndex>=0&&s.add(l.sourceMaterialIndex)}if(s.size===1){let[l]=s,d=n.get(l)??[];d.push(a),n.set(l,d)}}let r=new Map;for(let[i,o]of n)o.length===1&&r.set(i,o[0]);return{byExactSource:t,bySourceMaterialIndex:r}}function ro(e){return[e.ownerNodePath,e.nodeIndex,e.meshIndex,e.primitiveIndex].join("\0")}function dc(e){let t=Number.isInteger(e.primitiveIndex)?`:${e.primitiveIndex}`:"",n=`${e.assetGuid||e.assetId||"asset"}:${e.nodeIndex}:${e.meshIndex}${t}`;return`slot_${mo(n)}`}function lc(e){let t=`${e.assetGuid||e.assetId||"asset"}:material:${e.sourceMaterialIndex}`;return`slot_${mo(t)}`}function cc(e,t){if(t.textureUsage==="material"||t.usage==="material")return{usage:"material",materialTexture:!0,environmentTexture:!1};if(F(t.capabilities)&&t.capabilities.materialTexture===!0)return{usage:"material",materialTexture:!0,environmentTexture:!1};if(t.textureUsage==="environment"||t.usage==="environment")return{usage:"environment",materialTexture:!1,environmentTexture:!0};if(F(t.capabilities)&&t.capabilities.environmentTexture===!0)return{usage:"environment",materialTexture:!1,environmentTexture:!0};let n=W.extname(e).toLowerCase();return[".env",".hdr",".dds",".ktx",".ktx2"].includes(n)?{usage:"environment",materialTexture:!1,environmentTexture:!0}:[".png",".jpg",".jpeg",".webp"].includes(n)?{usage:"material",materialTexture:!0,environmentTexture:!1}:null}function io(e){let t=Array.isArray(e.scenes)?e.scenes:[],n=Number.isInteger(e.scene)?e.scene:0,r=t[n]??t[0];return Array.isArray(r?.nodes)?r.nodes.filter(Number.isInteger):[]}function oo(e){let t=new Map;for(let n=0;n<e.length;n+=1){let r=Array.isArray(e[n]?.children)?e[n].children:[];for(let i of r)Number.isInteger(i)&&!t.has(i)&&t.set(i,n)}return t}function ao(e,t,n,r){let i=[],o=r,a=new Set;for(;Number.isInteger(o)&&o>=0&&o<e.length;){if(a.has(o))return"";a.add(o),i.push(uc(e[o],o));let s=t.get(o);if(typeof s!="number"||!Number.isInteger(s))break;o=s}return i.reverse(),i.length>1&&n.has(o)&&i.shift(),i.filter(Boolean).join("/")}function uc(e,t){return(F(e)&&typeof e.name=="string"?e.name.trim():"")||`node_${t}`}function fc(e,t,n){let r=F(e)&&typeof e.name=="string"?e.name.trim():"",i=so(t);return r||i||n.split("/").filter(Boolean).pop()||n}function so(e){return F(e)&&typeof e.name=="string"?e.name.trim():""}function lo(e,t){let n=[],r=t,i=new Set;for(;Number.isInteger(r)&&r>=0;){if(i.has(r))return[];i.add(r),n.push(r);let o=e.get(r);if(!Number.isInteger(o))break;r=o}return n.reverse(),n}function mc(e,t){let n=F(e)?e:{},r=Number.isInteger(n.material)?n.material:-1,i=r>=0?t[r]:null,o=typeof i?.name=="string"&&i.name.trim()?i.name.trim():"";return{index:r,name:o}}function co(e,t){let n=F(e)?e:{},r=Number.isInteger(n.indices)?n.indices:-1,i=fo(n),o=r>=0?t[r]:null,a=i>=0?t[i]:null,s=Number.isFinite(o?.count)?Number(o.count):Number.isFinite(a?.count)?Number(a.count):null;if(s==null)return null;let l=Number.isInteger(n.mode)?n.mode:4;return l===4?Math.floor(s/3):l===5||l===6?Math.max(0,s-2):0}function uo(e,t){let n=F(e)?e:{},r=fo(n),i=r>=0?t[r]:null,o=Zi(i?.min),a=Zi(i?.max);return o&&a?{min:o,max:a}:null}function fo(e){let t=F(e.attributes)?e.attributes:{};return Number.isInteger(t.POSITION)?t.POSITION:-1}function Zi(e){if(!Array.isArray(e)||e.length<3)return null;let t=Number(e[0]),n=Number(e[1]),r=Number(e[2]);return Number.isFinite(t)&&Number.isFinite(n)&&Number.isFinite(r)?[t,n,r]:null}function F(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)}function mo(e){let t=String(e??""),n=2166136261;for(let r=0;r<t.length;r+=1)n^=t.charCodeAt(r),n=Math.imul(n,16777619);return(n>>>0).toString(16).padStart(8,"0")}import yt from"node:fs/promises";import ne from"node:path";async function po(e,t={}){try{let n=await gc(e);if(!n)return[];let r=Array.isArray(n.gltf.images)?n.gltf.images:[],i=t.imageIndexes?new Set(t.imageIndexes.filter(a=>Number.isInteger(a)&&a>=0)):null,o=[];for(let a=0;a<r.length;a+=1){if(i&&!i.has(a))continue;let s=q(r[a]);if(!s)continue;let l=await pc(e,n,s);if(!l)continue;let d=ht(s.name)??(l.originalFileName?ne.parse(l.originalFileName).name:null)??void 0;o.push({imageIndex:a,bytes:l.bytes,extension:l.extension,mimeType:l.mimeType,...d?{displayName:d}:{},...l.originalFileName?{originalFileName:l.originalFileName}:{}})}return o}catch{return[]}}function bo(e){let t=new Set;for(let n of ho(e)){let r=be(n.imageIndex),i=be(n.previewImageIndex);r!=null&&t.add(r),i!=null&&t.add(i)}return[...t].sort((n,r)=>n-r)}function yo(e){let t=new Map;for(let n of ho(e)){let r=be(n.imageIndex),i=be(n.previewImageIndex);r==null||i==null||r===i||t.set(`${r}:${i}`,{imageIndex:r,previewImageIndex:i})}return[...t.values()].sort((n,r)=>n.imageIndex-r.imageIndex||n.previewImageIndex-r.previewImageIndex)}function ho(e){if(!e)return[];let t=[],n=Array.isArray(e.materialSlots)?e.materialSlots:[];for(let r of n){let i=q(r),o=Array.isArray(i?.sourceMaterialProfiles)?i.sourceMaterialProfiles:[];for(let a of o){let s=q(a),l=Array.isArray(s?.textureHints)?s.textureHints:[];for(let d of l){let u=q(d);u&&t.push(u)}}}return t}function So(e,t){if(!e||t.length===0)return e;let n=new Map(t.map(a=>[a.imageIndex,a.textureAssetId])),r=structuredClone(e),i=Array.isArray(r.materialSlots)?r.materialSlots:[],o=!1;for(let a of i){let s=q(a),l=Array.isArray(s?.sourceMaterialProfiles)?s.sourceMaterialProfiles:[];for(let d of l){let u=q(d);if(!u)continue;let c=Array.isArray(u.textureHints)?u.textureHints:[];if(c.length===0)continue;let m=[];for(let p of c){let g=q(p),b=be(g?.imageIndex),S=ht(g?.profilePath),x=b==null?null:n.get(b)??null;if(!x||!S||!yc(S)){m.push(p);continue}let D=q(u.profile)??{};hc(D,S,{textureAssetId:x}),u.profile=D,o=!0}m.length>0?u.textureHints=m:delete u.textureHints}}return o?r:e}async function gc(e){let t=ne.extname(e).toLowerCase();if(t===".gltf"){let l=JSON.parse(await yt.readFile(e,"utf8")),d=await Promise.all((Array.isArray(l.buffers)?l.buffers:[]).map(u=>go(e,q(u))));return{gltf:l,buffers:d}}if(t!==".glb")return null;let n=await yt.readFile(e);if(n.length<20||n.toString("utf8",0,4)!=="glTF"||n.readUInt32LE(4)!==2||n.readUInt32LE(8)>n.length)return null;let r=null,i=[],o=12;for(;o+8<=n.length;){let l=n.readUInt32LE(o),d=n.readUInt32LE(o+4);if(o+=8,o+l>n.length)return null;let u=n.subarray(o,o+l);d===1313821514?r=JSON.parse(u.toString("utf8").replace(/\0+$/g,"")):d===5130562&&i.push(Buffer.from(u)),o+=l}if(!r)return null;let a=Array.isArray(r.buffers)?r.buffers:[],s=await Promise.all(a.map(async(l,d)=>{let u=q(l);return ht(u?.uri)?go(e,u):i[d]??(d===0?i[0]??null:null)}));return s.length===0&&i.length>0&&s.push(i[0]),{gltf:r,buffers:s}}async function go(e,t){let n=ht(t?.uri);if(!n)return null;let r=Po(n);if(r)return r.bytes;if(Zn(n))return null;let i=xo(n);return i?Eo(e,i):null}async function pc(e,t,n){let r=ht(n.uri);if(r){let p=Po(r);if(p){let D=Xn(p.bytes);return D?{bytes:p.bytes,...D}:null}if(Zn(r))return null;let g=xo(r);if(!g)return null;let b=await Eo(e,g);if(!b)return null;let S=ne.basename(g),x=Xn(b);return x?{bytes:b,...x,originalFileName:S}:null}let i=be(n.bufferView);if(i==null)return null;let o=Array.isArray(t.gltf.bufferViews)?t.gltf.bufferViews:[],a=q(o[i]),s=be(a?.buffer)??0,l=t.buffers[s],d=be(a?.byteOffset)??0,u=be(a?.byteLength);if(!l||u==null||d+u>l.length)return null;let c=Buffer.from(l.subarray(d,d+u)),m=Xn(c);return m?{bytes:c,...m}:null}async function Eo(e,t){if(ne.isAbsolute(t)||ne.win32.isAbsolute(t)||t.includes("\0"))return null;try{let n=await yt.realpath(ne.dirname(e)),r=ne.resolve(n,t),i=await yt.realpath(r);return bc(n,i)?await yt.readFile(i):null}catch{return null}}function xo(e){if(Zn(e))return null;try{return decodeURIComponent(e)}catch{return null}}function bc(e,t){let n=ne.relative(e,t);return n===""||!n.startsWith(`..${ne.sep}`)&&n!==".."&&!ne.isAbsolute(n)}function Po(e){let t=/^data:([^;,]+)?(?:;[^,]*)?,(.*)$/is.exec(e);if(!t)return null;let n=e.slice(0,e.indexOf(","));try{return{bytes:n.toLowerCase().includes(";base64")?Buffer.from(t[2]??"","base64"):Buffer.from(decodeURIComponent(t[2]??""),"utf8")}}catch{return null}}function Xn(e){return e.length>=8&&e.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10]))?{extension:".png",mimeType:"image/png"}:e.length>=3&&e[0]===255&&e[1]===216&&e[2]===255?{extension:".jpg",mimeType:"image/jpeg"}:e.length>=12&&e.toString("ascii",0,4)==="RIFF"&&e.toString("ascii",8,12)==="WEBP"?{extension:".webp",mimeType:"image/webp"}:e.length>=12&&e.subarray(0,12).equals(Buffer.from([171,75,84,88,32,50,48,187,13,10,26,10]))?{extension:".ktx2",mimeType:"image/ktx2"}:null}function yc(e){return["baseColor.texture","normal.texture","metallicRoughness.texture","occlusion.texture","emission.texture","emission.maskTexture","alpha.texture"].includes(e)}function hc(e,t,n){let r=t.split("."),i=e;for(let o=0;o<r.length-1;o+=1){let a=r[o],s=q(i[a])??{};i[a]=s,i=s}i[r[r.length-1]]=n}function Zn(e){return/^[a-z][a-z0-9+.-]*:/i.test(e)||e.startsWith("/")||ne.win32.isAbsolute(e)}function q(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function ht(e){return typeof e=="string"&&e.trim()?e.trim():null}function be(e){return Number.isInteger(e)&&e>=0?e:null}function er(e){if(typeof e=="number"&&Number.isFinite(e)&&e>0)return e;if(!e||typeof e!="object")return;let t=e,n=Qn(t.x),r=Qn(t.y),i=Qn(t.z);if(!(n==null||r==null||i==null||n<=0||r<=0||i<=0))return{x:n,y:r,z:i}}function Qn(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function tr(e){return e==="shared"||e==="instance"?e:void 0}function nr(e){return Number.isInteger(e)&&e>=0?e:void 0}var C=class extends Error{constructor(t,n={}){super(t),this.name="PlayableEditorAssetRegistryError",this.details=n}};function Sc(e){let t={};for(let n=0;n<e.length;n+=1){let r=e[n];if(r==="--unregister"){t.unregister=!0;continue}if(r==="--payload"){t.payload=e[n+1],n+=1;continue}if(r==="--asset-id"){t.assetId=e[n+1],n+=1;continue}if(r==="--guid"){t.guid=e[n+1],n+=1;continue}if(r==="--delete-file"){t.deleteFile=!0;continue}if(r==="--keep-file"){t.deleteFile=!1;continue}if(r==="--force"){t.force=!0;continue}(r==="--help"||r==="-h")&&(t.help=!0)}return t}async function To(e,t=process.argv.slice(2)){let n=Sc(t),r=await Ic(e),i=le(r.errorCodes),o=(a,s={})=>{let l={ok:!1,error:a,...s};process.stderr.write(`${JSON.stringify(l,null,2)}
|
|
9
|
+
`),process.exit(1)};try{if(n.help){process.stdout.write(["Usage:",` ${e.commands?.register??"npm run asset:register"} -- --payload /path/to/payload.json`,` ${e.commands?.unregister??"npm run asset:unregister"} -- --payload /path/to/payload.json`,` ${e.commands?.unregister??"npm run asset:unregister"} -- --asset-id asset_xxx [--keep-file] [--force]`,` ${e.commands?.unregister??"npm run asset:unregister"} -- --guid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx [--keep-file] [--force]`,""].join(`
|
|
10
|
+
`));return}if(n.unregister){let s=await Pc(e,n,i);process.stdout.write(`${JSON.stringify(s)}
|
|
11
|
+
`);return}let a=await Yt(e,n,i);process.stdout.write(`${JSON.stringify(a)}
|
|
12
|
+
`)}catch(a){a instanceof C&&o(a.message,a.details),o("asset_register_failed",{message:a instanceof Error?a.message:String(a)})}}async function Yt(e,t,n={}){if(!t.payload&&!t.payloadData)throw new C("missing_payload_arg");let r=await Co(e,t),i=e.codeKeyPolicy??"legacy";if(i==="disabled"&&Object.prototype.hasOwnProperty.call(r,"codeKey"))throw new C("payload_code_key_disabled",{codeKeyPolicy:i,codeKey:r.codeKey});let o=R.resolve(e.cwd,String(r.sourcePath??r.assetPath??"")),a=Ac(e,o);if(!a)throw new C(e.unsupportedSourceErrorCode??n.sourceMustBeSupportedAsset??"source_must_be_supported_asset",{sourcePath:o,supportedExtensions:Mo(e)});try{await N.access(o)}catch{throw new C(n.sourceFileNotFound??"source_file_not_found",{sourcePath:o})}let s=Oc(r);await N.mkdir(e.generatedDir,{recursive:!0});let l=await Oe(e),d=await dr(o),u=qn(r.kind??r.assetKind??r.assetType,o);if(!u)throw new C("unsupported_asset_kind",{sourcePath:o,assetType:r.assetType});or(u,o,"source_path");let c=Nc(l,r,s,o,d,u,e),m=$(r.assetName)??c?.originalFileName??R.basename(o),p=$(r.guid);if(c&&p&&c.guid!==p)throw new C("payload_guid_must_match_existing_asset",{guid:p,existingGuid:c.guid,existingAssetId:c.assetId});let g=c?.guid??p??ir.randomUUID(),b=$(r.projectAssetId),S=Hn(u,g);if(c?.assetId&&c.assetId!==S)throw new C("manifest_asset_id_must_match_guid",{guid:g,assetId:c.assetId,expectedAssetId:S});if(b&&b!==S)throw new C("project_asset_id_must_match_guid",{guid:g,projectAssetId:b,expectedAssetId:S});let x=`${S}${a}`,D=wc(e,{existing:c,sourcePath:o,kind:u,targetFileName:x}),w=Ke(e,D,u,"target_path"),M=new Date().toISOString(),O=Hi($(r.displayName)??c?.displayName,m),z=Jt({...Jt(c?.external)??{},...s??{}}),Pe=!1,f=[],v=null;try{await N.mkdir(R.dirname(w),{recursive:!0});let y=Dc(o,w),G=y||await Oo(w),J=!c||c.contentHash!==d.contentHash||!G;!y&&J&&(await N.copyFile(o,w),Pe=!c);let j=await Ro(e,{existing:c,payload:r,sourcePath:o,targetPath:w,kind:u,guid:g,assetId:S});if(u==="model"){let We=await Ec({config:e,manifest:l,metadata:j,sourcePath:o,sourceAssetId:S,sourceAssetGuid:g,sourceDisplayName:O,now:M});f=We.createdPaths,j=So(j,We.references)}let $e=ar({...c??{},guid:g,assetId:S,kind:u,displayName:O,relativePath:D,originalFileName:m,...i==="legacy"?{codeKey:Wi($(r.codeKey)??$(r.assetName)??c?.codeKey,m)}:{},...$(r.category)?{category:$(r.category)}:{},placeable:u==="texture"?!0:typeof r.placeable=="boolean"?r.placeable:c?.placeable??u==="model",...nr(r.warmupCount)!=null?{warmupCount:nr(r.warmupCount)}:{},...typeof r.singleton=="boolean"?{singleton:r.singleton}:{},...tr(r.materialMode)?{materialMode:tr(r.materialMode)}:{},...er(r.scale)?{defaults:{transform:{scale:er(r.scale)}}}:{},contentHash:d.contentHash,byteSize:d.byteSize,external:z,metadata:j,createdAt:c?.createdAt??M,updatedAt:J?M:c?.updatedAt??M});if(!$e)throw new C("invalid_manifest_entry",{assetId:S,guid:g});v=$e;let Ie=l.findIndex(We=>We.guid===g||We.assetId===S);Ie>=0?l[Ie]=$e:l.push($e),l.sort(Gc),await $o(e,l)}catch(y){Pe&&await N.rm(w,{force:!0}).catch(()=>{});for(let G of f)await N.rm(G,{force:!0}).catch(()=>{});throw y}return{ok:!0,guid:g,assetId:S,kind:u,...v?.contentHash?{contentHash:v.contentHash}:{},...v?.external?{external:v.external}:{},displayName:v?.displayName,originalFileName:v?.originalFileName,assetUrl:Cc(e,D,u),targetPath:w,manifestPath:e.manifestPath,registryPath:e.registryPath}}async function Ec(e){let t=bo(e.metadata),n=yo(e.metadata),r=await po(e.sourcePath,{imageIndexes:t}),i=[],o=new Map,a=[];try{for(let d of r){let u=No(d.bytes),c=e.manifest.find(O=>O.kind==="texture"&&O.contentHash===u.contentHash&&le(le(O.metadata).capabilities).materialTexture!==!1&&le(O.metadata).textureUsage!=="environment");if(c){o.set(d.imageIndex,c),i.push({imageIndex:d.imageIndex,textureAssetId:c.assetId});continue}let m=jc(u.contentHash),p=Hn("texture",m),g=e.manifest.find(O=>O.guid===m||O.assetId===p);if(g)throw new C("derived_texture_identity_conflict",{sourceAssetId:e.sourceAssetId,imageIndex:d.imageIndex,assetId:p,contentHash:u.contentHash,conflictingAssetId:g.assetId,conflictingContentHash:g.contentHash});let b=`${p}${d.extension}`,S=ko(e.config,"texture",b),x=Ke(e.config,S,"texture","derived_texture_target_path");if(await N.mkdir(R.dirname(x),{recursive:!0}),await Oo(x)){let O=await dr(x);if(O.contentHash!==u.contentHash)throw new C("derived_texture_target_conflict",{sourceAssetId:e.sourceAssetId,imageIndex:d.imageIndex,assetId:p,targetPath:x,contentHash:u.contentHash,existingContentHash:O.contentHash})}else await _c(x,d.bytes),a.push(x);let D=d.displayName?`${e.sourceDisplayName} / ${d.displayName}`:`${e.sourceDisplayName} Texture ${d.imageIndex+1}`,w=await Ro(e.config,{existing:null,payload:{metadata:{textureUsage:"material",capabilities:{materialTexture:!0,environmentTexture:!1},derivedFrom:{kind:"gltf-image",sourceAssetId:e.sourceAssetId,sourceAssetGuid:e.sourceAssetGuid,imageIndex:d.imageIndex,mimeType:d.mimeType}}},sourcePath:x,targetPath:x,kind:"texture",guid:m,assetId:p}),M=ar({guid:m,assetId:p,kind:"texture",displayName:D,relativePath:S,originalFileName:d.originalFileName??`${Lc(D)}${d.extension}`,category:"Texture",placeable:!0,contentHash:u.contentHash,byteSize:u.byteSize,metadata:w,createdAt:e.now,updatedAt:e.now});if(!M)throw new C("invalid_derived_texture_manifest_entry",{sourceAssetId:e.sourceAssetId,imageIndex:d.imageIndex,assetId:p});e.manifest.push(M),o.set(d.imageIndex,M),i.push({imageIndex:d.imageIndex,textureAssetId:p})}let s=new Map,l=new Map;for(let d of o.values())R.extname(d.relativePath).toLowerCase()===".ktx2"&&s.set(d.assetId,d);for(let d of n){let u=o.get(d.imageIndex),c=o.get(d.previewImageIndex);!u||!c||R.extname(u.relativePath).toLowerCase()!==".ktx2"||l.set(u.assetId,c.assetId)}for(let d of s.values()){let u=le(d.metadata),c=xc(u);delete c[e.sourceAssetId];let m=l.get(d.assetId);m&&(c[e.sourceAssetId]=m);let p=Object.fromEntries(Object.entries(c).sort(([S],[x])=>S.localeCompare(x))),g=Object.values(p)[0],b={...u};g?(b.previewTextureAssetId=g,b.previewTextureAssetIdsBySourceAssetId=p):(delete b.previewTextureAssetId,delete b.previewTextureAssetIdsBySourceAssetId),d.metadata=b}return{references:i,createdPaths:a}}catch(s){for(let l of a)await N.rm(l,{force:!0}).catch(()=>{});throw s}}function xc(e){let t={},n=le(e.previewTextureAssetIdsBySourceAssetId);for(let[o,a]of Object.entries(n)){let s=$(o),l=$(a);s&&l&&(t[s]=l)}if(Object.keys(t).length>0)return t;let r=$(e.previewTextureAssetId),i=$(le(e.derivedFrom).sourceAssetId);return r&&i&&(t[i]=r),t}async function Do(e,t={}){let n=await Oe(e),r=[];for(let i of n){let o=Ke(e,i.relativePath,i.kind,"refresh_source_path"),a;try{a=await dr(o)}catch(u){throw Zt(u)&&u.code==="ENOENT"?new C(t.sourceFileNotFound??"source_file_not_found",{assetId:i.assetId,guid:i.guid,sourcePath:o}):u}let s=i.kind==="model"&&le(i.metadata).assetMetadataVersion!==Yn,l=i.kind==="texture"&&i.placeable===!1;if(i.contentHash===a.contentHash&&i.byteSize===a.byteSize&&!s&&!l)continue;let d=await Yt(e,{payloadData:{sourcePath:o,guid:i.guid,projectAssetId:i.assetId,kind:i.kind}},t);if(!d.contentHash)throw new C("asset_refresh_missing_content_hash",{assetId:i.assetId,guid:i.guid,sourcePath:o});r.push({guid:i.guid,assetId:i.assetId,kind:i.kind,...i.contentHash?{previousContentHash:i.contentHash}:{},contentHash:d.contentHash})}return{ok:!0,scannedAssetCount:n.length,refreshedAssets:r}}async function Pc(e,t,n={}){let r=await Co(e,t),i=$(t.assetId??r?.assetId),o=$(t.guid??r?.guid);if(!i&&!o)throw new C(n.missingAssetId??"missing_asset_id");let a=Uc(t,r),s=zc(t,r);await N.mkdir(e.generatedDir,{recursive:!0});let l=await Oe(e),d=l.findIndex(p=>i&&p.assetId===i||o&&p.guid===o);if(d<0)throw new C(n.manifestEntryNotFound??"manifest_entry_not_found",{assetId:i,guid:o,manifestPath:e.manifestPath});let u=l[d];if(!u)throw new C("manifest_entry_not_found",{assetId:i,guid:o});await Bc(e,u.assetId,s,n),l.splice(d,1);let c=!1,m=null;return a&&(m=Ke(e,u.relativePath,u.kind,"unregister_target_path"),await N.rm(m,{force:!0}),c=!0),await $o(e,l),{ok:!0,guid:u.guid,assetId:u.assetId,kind:u.kind,removed:!0,deleteFile:a,force:s,deletedFile:c,targetPath:m,manifestPath:e.manifestPath,registryPath:e.registryPath}}async function Oe(e){let t=await Xt(e.manifestPath,[]);if(!Array.isArray(t))throw new C("manifest_invalid_root",{manifestPath:e.manifestPath});let n=t.map((a,s)=>{let l=ar(a,!0);if(!l)throw new C("manifest_invalid_entry",{index:s,manifestPath:e.manifestPath});return l}),r=new Set,i=new Set,o=e.codeKeyPolicy??"legacy";for(let a of n){if(o==="disabled"&&a.codeKey)throw new C("manifest_code_key_disabled",{manifestPath:e.manifestPath,codeKeyPolicy:o,assetId:a.assetId,codeKey:a.codeKey});if(r.has(a.assetId))throw new C("manifest_duplicate_asset_id",{assetId:a.assetId});if(i.has(a.guid))throw new C("manifest_duplicate_guid",{guid:a.guid});r.add(a.assetId),i.add(a.guid)}return n}async function Ic(e){return e.loadRules?e.loadRules():e.rulesPath?Xt(e.rulesPath,{}):{}}function Io(e){return(Array.isArray(e)?e:[e]).filter(n=>typeof n=="string"&&!!n.trim()).map(n=>{let r=n.trim().toLowerCase();return r.startsWith(".")?r:`.${r}`})}function Mo(e){let t=Io(e.supportedExtensions??e.supportedExtension);return t.length>0?t:Io(Kn)}function Ac(e,t){let n=t.toLowerCase();return Mo(e).find(r=>n.endsWith(r))??null}function wc(e,t){return t.existing?.relativePath?t.existing.relativePath:Tc(e,t.sourcePath,t.kind)??ko(e,t.kind,t.targetFileName)}function ko(e,t,n){let r=e.relativeImportedPath;return r.length>=2?r(t,n):r({kind:t,fileName:n})}function Tc(e,t,n){let r=e.assetRootDir??e.assetsDir;if(!r)return null;let i=R.resolve(t);return!Ao(R.resolve(r),i)||Ao(R.resolve(e.generatedDir),i)?null:(or(n,i,"source_path"),R.relative(e.generatedDir,i).split(R.sep).join("/"))}function Ao(e,t){let n=R.relative(e,t);return n===""||!n.startsWith("..")&&!R.isAbsolute(n)}function Dc(e,t){return R.relative(R.resolve(e),R.resolve(t))===""}function Mc(e,t,n){let r=R.relative(e,t);if(r.startsWith("..")||R.isAbsolute(r))throw new C(`${n}_outside_allowed_directory`,{parent:e,child:t})}function kc(e,t,n){let r=R.relative(e,t);if(!r.startsWith("..")&&!R.isAbsolute(r))throw new C(`${n}_inside_forbidden_directory`,{parent:e,child:t})}function Ke(e,t,n,r){let i=R.resolve(e.generatedDir,t),o=R.resolve(e.assetRootDir??e.assetsDir??e.importedDir??e.generatedDir);return Mc(o,i,r),kc(R.resolve(e.generatedDir),i,r),or(n,i,r),i}function Cc(e,t,n){let r=Ke(e,t,n,"asset_url_path");return typeof e.publicUrlForCatalogRelativePath=="function"?e.publicUrlForCatalogRelativePath(t):typeof e.publicUrlForRelativePath=="function"?e.publicUrlForRelativePath(t):`/${R.relative(e.cwd,r).split(R.sep).join("/")}`}function or(e,t,n){let r=R.extname(t).toLowerCase(),i=qi(e);if(!i.includes(r))throw new C(`${n}_unsupported_extension`,{kind:e,filePath:t,extension:r,supportedExtensions:i})}async function Xt(e,t){try{return JSON.parse(await N.readFile(e,"utf8"))}catch(n){if(Zt(n)&&n.code==="ENOENT")return t;throw n}}async function Co(e,t){if(t.payloadData)return structuredClone(t.payloadData);if(!t.payload)return{};let n=R.resolve(e.cwd,t.payload),r=await Xt(n,null);if(!r||typeof r!="object"||Array.isArray(r))throw new C("invalid_payload_json",{payloadPath:n});return r}function ar(e,t=!1){if(!e||typeof e!="object"||Array.isArray(e))return null;let n=e,r=t?sr:$,i=r(n.guid),o=r(n.assetId),a=r(n.kind);if(t&&(!a||"assetKind"in n||"assetType"in n))return null;let s=t?Bi.includes(a)?a:null:qn(n.kind??n.assetKind??n.assetType,n.relativePath),l=r(n.displayName),d=r(n.relativePath);if(!i||!o||!s||!l||!d||t&&(!Ne(n,"originalFileName")||!Ne(n,"codeKey")||!Ne(n,"category")||!Ne(n,"materialMode")||!Ne(n,"contentHash")||!Ne(n,"createdAt")||!Ne(n,"updatedAt")||"placeable"in n&&typeof n.placeable!="boolean"||"warmupCount"in n&&(!Number.isInteger(n.warmupCount)||n.warmupCount<0)||"singleton"in n&&typeof n.singleton!="boolean"||"defaults"in n&&xe(n.defaults)==null||"byteSize"in n&&(!Number.isFinite(n.byteSize)||n.byteSize<0)||"metadata"in n&&xe(n.metadata)==null||"external"in n&&!Rc(n.external)))return null;let u=xe(n.metadata),c=r(n.originalFileName),m=r(n.codeKey),p=r(n.category),g=r(n.materialMode),b=xe(n.defaults),S=r(n.contentHash),x=Jt(n.external),D=r(n.createdAt),w=r(n.updatedAt);return{guid:i,assetId:o,kind:s,displayName:l,relativePath:d,...c?{originalFileName:c}:{},...m?{codeKey:m}:{},...p?{category:p}:{},...typeof n.placeable=="boolean"?{placeable:n.placeable}:{},...typeof n.warmupCount=="number"?{warmupCount:n.warmupCount}:{},...typeof n.singleton=="boolean"?{singleton:n.singleton}:{},...g?{materialMode:g}:{},...b?{defaults:b}:{},...S?{contentHash:S}:{},...typeof n.byteSize=="number"?{byteSize:n.byteSize}:{},...x?{external:x}:{},...u?{metadata:u}:{},...D?{createdAt:D}:{},...w?{updatedAt:w}:{}}}function sr(e){return typeof e=="string"&&e.length>0&&e===e.trim()?e:null}function Ne(e,t){return!(t in e)||sr(e[t])!=null}function Rc(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e,n=["platformAssetId","assetPath","assetUrl"],r=Object.keys(t);return r.length>0&&r.every(i=>n.includes(i)&&sr(t[i])!=null)}function Jt(e,t=!1){if(!e||typeof e!="object"||Array.isArray(e))return null;let n=e,r=$(n.platformAssetId),i;try{if(i=Ji(n.assetPath),t&&Object.prototype.hasOwnProperty.call(n,"assetPath")&&!i)throw new Error("external_asset_path_must_be_portable")}catch{if(t)throw new C("external_asset_path_must_be_portable",{assetPath:$(n.assetPath)})}let o=$(n.assetUrl);return!r&&!i&&!o?null:{...r?{platformAssetId:r}:{},...i?{assetPath:i}:{},...o?{assetUrl:o}:{}}}function xe(e){return!e||typeof e!="object"||Array.isArray(e)?null:structuredClone(e)}async function Ro(e,t){let n=xe(t.payload?.metadata);if(typeof e.resolveAssetMetadata=="function"){let r=await e.resolveAssetMetadata({...t,existingMetadata:xe(t.existing?.metadata),payloadMetadata:n}),i=xe(r);return i||null}return qt({kind:t.kind,sourcePath:t.sourcePath,existingMetadata:xe(t.existing?.metadata),payloadMetadata:n,guid:t.guid,assetId:t.assetId,cwd:e.cwd,assetsDir:e.assetsDir})}function Nc(e,t,n,r,i,o,a){let s=$(t.guid),l=$(t.projectAssetId);if(s){let c=e.find(m=>m.guid===s);if(c)return c}if(l){let c=e.find(m=>m.assetId===l);if(c)return c}if(n?.platformAssetId){let c=e.find(m=>m.kind===o&&$c(m.external)===n.platformAssetId);if(c)return c}if(n?.assetPath){let c=e.find(m=>m.kind===o&&vc(m.external)===n.assetPath);if(c)return c}let d=R.resolve(r),u=e.find(c=>{if(c.kind!==o)return!1;try{return R.resolve(Ke(a,c.relativePath,c.kind,"manifest_asset_path"))===d}catch{return!1}});if(u)return u;if(i.contentHash){let c=e.find(m=>m.kind===o&&m.contentHash===i.contentHash);if(c)return c}return null}function Oc(e){return Jt({...e.external&&typeof e.external=="object"&&!Array.isArray(e.external)?e.external:{},platformAssetId:e.external?.platformAssetId??e.platformAssetId??e.assetId,assetUrl:e.external?.assetUrl??e.assetUrl},!0)}function $c(e){return $(le(e).platformAssetId)}function vc(e){return $(le(e).assetPath)}function Gc(e,t){return e.kind.localeCompare(t.kind)||e.displayName.localeCompare(t.displayName)||e.assetId.localeCompare(t.assetId)}async function rr(e,t){try{if(await N.readFile(e,"utf8")===t)return!1}catch(r){if(!Zt(r)||r.code!=="ENOENT")throw r}let n=`${e}.tmp-${process.pid}-${Date.now()}`;try{return await N.writeFile(n,t),await N.rename(n,e),!0}catch(r){throw await N.rm(n,{force:!0}).catch(()=>{}),r}}async function _c(e,t){let n=`${e}.tmp-${process.pid}-${Date.now()}`;try{await N.writeFile(n,t),await N.rename(n,e)}catch(r){throw await N.rm(n,{force:!0}).catch(()=>{}),r}}async function dr(e){let t=await N.readFile(e),n=await N.stat(e);return{...No(t),byteSize:n.size}}function No(e){return{contentHash:`sha256:${ir.createHash("sha256").update(e).digest("hex")}`,byteSize:e.byteLength}}function jc(e){let t=ir.createHash("sha256").update(`material-texture\0${e}`).digest("hex");return`${t.slice(0,8)}-${t.slice(8,12)}-5${t.slice(13,16)}-8${t.slice(17,20)}-${t.slice(20,32)}`}function Lc(e){return e.trim().replace(/[^\p{L}\p{N}._-]+/gu,"_").replace(/^_+|_+$/g,"")||"Imported_Texture"}async function Oo(e){try{return await N.access(e),!0}catch{return!1}}async function $o(e,t){let n=Wt(t,{codeKeyPolicy:e.codeKeyPolicy??"legacy"});await N.mkdir(R.dirname(e.manifestPath),{recursive:!0}),await N.mkdir(R.dirname(e.registryPath),{recursive:!0});let r=await wo(e.manifestPath),i=await wo(e.registryPath);try{await rr(e.manifestPath,`${JSON.stringify(t,null,2)}
|
|
13
|
+
`),await rr(e.registryPath,n)}catch(o){let a=[];for(let[s,l]of[[e.manifestPath,r],[e.registryPath,i]])try{await Fc(s,l)}catch(d){a.push(d)}if(a.length>0){let s=new Error("generated_registry_transaction_rollback_failed");throw s.cause=o,s.rollbackErrors=a,s}throw o}}async function wo(e){try{return(await N.lstat(e)).isFile()?{kind:"file",content:await N.readFile(e,"utf8")}:{kind:"other"}}catch(t){if(Zt(t)&&t.code==="ENOENT")return{kind:"missing"};throw t}}async function Fc(e,t){if(t.kind!=="other"){if(t.kind==="missing"){await N.rm(e,{force:!0});return}await rr(e,t.content)}}function Uc(e,t){return typeof e.deleteFile=="boolean"?e.deleteFile:t&&typeof t.deleteFile=="boolean"?t.deleteFile:!0}function zc(e,t){return!!(e.force||t?.force===!0)}async function Bc(e,t,n,r){if(n||!e.scenePath)return;let i=await Xt(e.scenePath,null),a=(Array.isArray(i?.scene?.nodes)?i.scene.nodes:[]).filter(s=>s?.kind==="instance"&&s?.instance?.assetId===t||s?.kind==="image"&&s?.image?.assetId===t).map(s=>s.id).filter(Boolean);if(a.length!==0)throw new C(r.assetStillReferenced??"asset_still_referenced",{assetId:t,scenePath:e.scenePath,nodeIds:a})}function $(e){return typeof e=="string"&&e.trim()?e.trim():null}function le(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function Zt(e){return e instanceof Error&&"code"in e}var Vc=[".glb",".gltf"],Kc=[".png",".jpg",".jpeg",".webp"],Hc=[".env",".hdr",".dds",".ktx",".ktx2"],Wc=[...Kc,...Hc],qc=[".mp3",".wav",".ogg",".flac",".aac",".m4a"],vo=[...Vc,...Wc,...qc];var ur=B.resolve(process.cwd()),Yc=await Xc(ur),_o=Zc(Yc),Qt=Qc(ur,_o),[en,He,...Go]=process.argv.slice(2);en==="asset"&&(He==="register"||He==="unregister")?await To(Qt,He==="unregister"?["--unregister",...Go]:Go):en==="asset"&&He==="refresh-metadata"?await eu(Qt):en==="asset"&&He==="regenerate-catalog"?await tu(Qt):en==="scene"&&He==="recompile"?await nu(ur,_o,Qt):(process.stderr.write(["Usage:"," fps-editor-project asset register --payload /path/to/payload.json"," fps-editor-project asset unregister --asset-id asset_xxx [--keep-file] [--force]"," fps-editor-project asset refresh-metadata"," fps-editor-project asset regenerate-catalog"," fps-editor-project scene recompile",""].join(`
|
|
14
|
+
`)),process.exitCode=1);async function Xc(e){let t=B.join(e,"fps.config.ts"),n=await import(`${Jc(t).href}?fps-editor-project=${Date.now()}`),r=n.default??n.fpsConfig;if(!r||typeof r!="object"||r.schemaVersion!==1)throw new Error("fps.config.ts must default-export a valid defineFpsProject() definition.");return r}function Zc(e){let t=e.authoring?.source,n=e.authoring?.assets;if(!t||!n)throw new Error("fps.config.ts is missing authoring source/assets.");return{source:{editorScene:t.document,runtimeScene:t.runtimeArtifact,rendering:t.rendering,shadows:t.shadows},assets:n}}function Qc(e,t){let n=B.resolve(e,t.assets.importedDir),r=B.resolve(e,t.assets.generatedDir),i=B.dirname(n);return{cwd:e,codeKeyPolicy:"disabled",assetsDir:i,importedDir:n,generatedDir:r,manifestPath:B.join(r,"asset-catalog.manifest.json"),registryPath:B.join(r,"asset-catalog.generated.ts"),scenePath:B.resolve(e,t.source.runtimeScene),supportedExtensions:vo,commands:{register:"asset:register",unregister:"asset:unregister"},relativeImportedPath(o,a){let s=o==="sound"?"sounds":o==="model"?"":"textures";return B.relative(r,B.join(n,s,a)).split(B.sep).join("/")},resolveAssetMetadata(o){return qt({kind:o.kind,sourcePath:o.sourcePath,existingMetadata:o.existingMetadata,payloadMetadata:o.payloadMetadata,guid:o.guid,assetId:o.assetId,cwd:e,assetsDir:i})}}}async function eu(e){let t=await Oe(e),n=0;for(let r of t){if(!r.relativePath)continue;let i=B.resolve(e.generatedDir,r.relativePath);await Yt(e,{payloadData:{sourcePath:i,kind:r.kind,guid:r.guid,projectAssetId:r.assetId,assetName:r.originalFileName,displayName:r.displayName,category:r.category,placeable:r.placeable,warmupCount:r.warmupCount,singleton:r.singleton,materialMode:r.materialMode,metadata:r.metadata}}),n+=1}process.stdout.write(`Refreshed metadata for ${n} canonical asset entries.
|
|
15
|
+
`)}async function tu(e){let t=await Do(e),n=await Oe(e),r=Wt(n,{codeKeyPolicy:e.codeKeyPolicy,generatedBy:"fps-editor-project asset regenerate-catalog"});await cr.writeFile(e.registryPath,r),process.stdout.write(`Regenerated ${e.registryPath} from ${n.length} canonical asset entries after refreshing ${t.refreshedAssets.length} asset(s).
|
|
16
|
+
`)}async function nu(e,t,n){let r=B.resolve(e,t.source.editorScene),i=B.resolve(e,t.source.runtimeScene),o=t.source.shadows?B.resolve(e,t.source.shadows):null,[a,s,l,d]=await Promise.all([lr(r),lr(i),o?lr(o):null,Oe(n)]),u=mi(a,ci(d)),c=Ti(u,s,{...l?{shadowMapExperimentConfig:l}:{},readCustomTransformRuntimeData:m=>m?.transformType==="groundDecal"&&m.groundDecal?{groundDecal:zi(m.groundDecal)}:null});await cr.writeFile(i,`${JSON.stringify(c.sceneConfig,null,2)}
|
|
17
|
+
`),process.stdout.write(`Runtime scene recompiled from the authoritative Editor document.
|
|
18
|
+
`)}async function lr(e){return JSON.parse(await cr.readFile(e,"utf8"))}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{once as p}from"node:events";import{readFile as a}from"node:fs/promises";import{spawn as d}from"node:child_process";import r from"node:path";var t=r.resolve(process.cwd()),l=r.join(t,".fps-editor/current.json"),s=JSON.parse(await a(l,"utf8").catch(e=>{throw new Error("Editor deployment is not prepared. Run npm run prepare:server first.",{cause:e})}));if(s.schemaVersion!==
|
|
2
|
+
import{once as p}from"node:events";import{readFile as a}from"node:fs/promises";import{spawn as d}from"node:child_process";import r from"node:path";var t=r.resolve(process.cwd()),l=r.join(t,".fps-editor/current.json"),s=JSON.parse(await a(l,"utf8").catch(e=>{throw new Error("Editor deployment is not prepared. Run npm run prepare:server first.",{cause:e})}));if(s.schemaVersion!==3||typeof s.serverEntry!="string")throw new Error("Editor deployment state is invalid. Run npm run prepare:server again.");var i=r.resolve(t,s.serverEntry),o=r.relative(t,i);if(!o||o===".."||o.startsWith(`..${r.sep}`)||r.isAbsolute(o))throw new Error("Prepared Editor server entry escapes the project root.");var c=d(process.execPath,[i],{cwd:t,env:process.env,stdio:"inherit"});for(let e of["SIGINT","SIGTERM"])process.once(e,()=>c.kill(e));var[f,n]=await p(c,"exit");n?process.kill(process.pid,n):process.exitCode=f??1;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
FPS Game Editor deployment npm package
|
|
2
|
-
Version: 0.2.3-beta.
|
|
3
|
-
Commit:
|
|
2
|
+
Version: 0.2.3-beta.5
|
|
3
|
+
Commit: e8a25acee1fcdd786db53269e731dbc18b860e2f
|
|
4
4
|
|
|
5
5
|
This package contains compiled third-party dependencies declared by the source repository.
|
|
6
6
|
The authoritative dependency names, versions, notices, and license metadata are recorded in
|