babylonjs-editor-tools 5.4.1-rc.7 → 5.4.1
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/build/index.node.js +1 -1
- package/build/src/index.js +2 -0
- package/build/src/index.js.map +1 -1
- package/build/src/loading/database/database.js +9 -1
- package/build/src/loading/database/database.js.map +1 -1
- package/build/src/loading/database/preload.js +89 -0
- package/build/src/loading/database/preload.js.map +1 -0
- package/build/src/loading/shadows.js +3 -0
- package/build/src/loading/shadows.js.map +1 -1
- package/build/src/tools/mesh.js +48 -25
- package/build/src/tools/mesh.js.map +1 -1
- package/build/src/tools/node.js +15 -0
- package/build/src/tools/node.js.map +1 -0
- package/build/src/tools/tools.js +19 -0
- package/build/src/tools/tools.js.map +1 -1
- package/declaration/src/index.d.ts +2 -0
- package/declaration/src/loading/database/database.d.ts +1 -0
- package/declaration/src/loading/database/preload.d.ts +23 -0
- package/declaration/src/tools/mesh.d.ts +12 -0
- package/declaration/src/tools/node.d.ts +6 -0
- package/declaration/src/tools/tools.d.ts +11 -0
- package/package.json +4 -4
package/build/index.node.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var be=Object.defineProperty;var an=Object.getOwnPropertyDescriptor;var ln=Object.getOwnPropertyNames;var cn=Object.prototype.hasOwnProperty;var i=(e,r)=>be(e,"name",{value:r,configurable:!0});var pn=(e,r)=>{for(var t in r)be(e,t,{get:r[t],enumerable:!0})},mn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of ln(r))!cn.call(e,o)&&o!==t&&be(e,o,{get:()=>r[o],enumerable:!(n=an(r,o))||n.enumerable});return e};var un=e=>mn(be({},"__esModule",{value:!0}),e);var Ao={};pn(Ao,{AdvancedAssetContainer:()=>me,AdvancedAssetContainerInstantiatedEntries:()=>pe,Cinematic:()=>fe,Database:()=>ye,NodeParticleSystemSet:()=>Zr.NodeParticleSystemSet,_applyScriptsForObject:()=>w,_preloadScriptsAssets:()=>dt,_registerScriptInstance:()=>yt,_removeRegisteredScriptInstance:()=>Ce,addExcludedCompressedTexture:()=>Oe,animationFromSprite:()=>uo,animationGroupFromScene:()=>Wn,applyMeshesLODQuality:()=>Be,applyRenderingConfigurationForCamera:()=>st,applyScriptOnObject:()=>Vn,applyShadowsQuality:()=>xn,applyTexturesQuality:()=>Gn,componentFromScene:()=>Qn,configureEngineToUseCompressedTextures:()=>Bn,configureMeshDistanceOrScreenCoverage:()=>Ve,configureShadowMapRefreshRate:()=>xe,configureShadowMapRenderListPredicate:()=>Ge,copyAndParseRagdollConfiguration:()=>ct,createAndOpenDatabase:()=>Po,createDefaultRenderingPipeline:()=>Ut,createMotionBlurPostProcess:()=>kt,createSSAO2RenderingPipeline:()=>Gt,createSSRRenderingPipeline:()=>Ft,createTAARenderingPipeline:()=>Vt,createVLSPostProcess:()=>Rt,defaultPipelineCameraConfigurations:()=>q,disposeDefaultRenderingPipeline:()=>nt,disposeMotionBlurPostProcess:()=>Xe,disposeSSAO2RenderingPipeline:()=>He,disposeSSRRenderingPipeline:()=>$e,disposeTAARenderingPipeline:()=>Ue,disposeVLSPostProcess:()=>Ke,forceCompileAllSceneMaterials:()=>$n,generateCinematicAnimationGroup:()=>ho,getAllScriptsByClassForObject:()=>te,getAnimationTypeForObject:()=>de,getDefaultRenderingPipeline:()=>le,getFromIndexDB:()=>ge,getMotionBlurPostProcess:()=>Ze,getPowerOfTwoUntil:()=>M,getSSAO2RenderingPipeline:()=>Dn,getSSRRenderingPipeline:()=>In,getScriptByClassForObject:()=>gt,getTAARenderingPipeline:()=>On,getTextureUrl:()=>Te,getVLSPostProcess:()=>vn,guiFromAsset:()=>Hn,isAbstractMesh:()=>K,isAnyParticleSystem:()=>Fe,isArcRotateCamera:()=>yn,isBone:()=>dn,isCamera:()=>Pe,isCinematicGroup:()=>yo,isCinematicKey:()=>It,isCinematicKeyCut:()=>ne,isCinematicKeyEvent:()=>go,isCinematicSound:()=>So,isClusteredLightContainer:()=>Ae,isDirectionalLight:()=>hn,isFreeCamera:()=>gn,isGPUParticleSystem:()=>An,isGroundMesh:()=>fn,isHemisphericLight:()=>Pn,isInstancedMesh:()=>se,isLight:()=>Ot,isMesh:()=>D,isNode:()=>j,isParticleSystem:()=>_e,isPointLight:()=>Sn,isScene:()=>Re,isSoundNode:()=>k,isSpotLight:()=>bn,isSprite:()=>Le,isTexture:()=>ae,isTransformNode:()=>L,loadMaterialFromFile:()=>zn,loadScene:()=>kn,motionBlurPostProcessCameraConfigurations:()=>H,nodeFromDescendants:()=>Un,nodeFromScene:()=>jn,normalizeAtlasJson:()=>ht,onKeyboardEvent:()=>po,onPointerEvent:()=>co,openIndexDB:()=>Et,parseCinematic:()=>fo,parseCinematicKeyValue:()=>R,parseDefaultRenderingPipeline:()=>it,parseKeyFrameAnimations:()=>vt,parseMotionBlurPostProcess:()=>tt,parseRagdollConfiguration:()=>Zt,parseSSAO2RenderingPipeline:()=>Je,parseSSRRenderingPipeline:()=>Qe,parseTAARenderingPipeline:()=>Ye,parseVLSPostProcess:()=>ze,particleSystemFromScene:()=>Jn,playSpriteAnimationFromName:()=>Kn,putInIndexDB:()=>F,registerScriptAssetParser:()=>Ln,saveRenderingConfigurationForCamera:()=>Rn,sceneAsset:()=>Yn,scriptAssetsCache:()=>O,scriptAssetsParsers:()=>ue,scriptsDictionary:()=>N,serializeDefaultRenderingPipeline:()=>ot,serializeMotionBlurPostProcess:()=>et,serializeSSAO2RenderingPipeline:()=>qe,serializeSSRRenderingPipeline:()=>je,serializeTAARenderingPipeline:()=>We,serializeVLSPostProcess:()=>ke,setDefaultRenderingPipelineRef:()=>Nn,setMotionBlurPostProcessRef:()=>wn,setSSAO2RenderingPipelineRef:()=>Mn,setSSRRenderingPipelineRef:()=>En,setTAARenderingPipelineRef:()=>Tn,setVLSPostProcessRef:()=>Cn,setupOfflineProvider:()=>bo,soundFromScene:()=>qn,spriteFromSpriteManager:()=>mo,ssaoRenderingPipelineCameraConfigurations:()=>Y,ssrRenderingPipelineCameraConfigurations:()=>U,taaRenderingPipelineCameraConfigurations:()=>W,visibleAsAsset:()=>lo,visibleAsBoolean:()=>Zn,visibleAsColor3:()=>no,visibleAsColor4:()=>oo,visibleAsEntity:()=>io,visibleAsKeyMap:()=>ao,visibleAsNumber:()=>eo,visibleAsString:()=>Xn,visibleAsTexture:()=>so,visibleAsVector2:()=>to,visibleAsVector3:()=>ro,vlsPostProcessCameraConfigurations:()=>Q});module.exports=un(Ao);function K(e){switch(e.getClassName?.()){case"Mesh":case"LineMesh":case"GroundMesh":case"InstancedMesh":return!0}return!1}i(K,"isAbstractMesh");function D(e){switch(e.getClassName?.()){case"Mesh":case"GroundMesh":return!0}return!1}i(D,"isMesh");function se(e){return e.getClassName?.()==="InstancedMesh"}i(se,"isInstancedMesh");function dn(e){return e.getClassName?.()==="Bone"}i(dn,"isBone");function fn(e){return e.getClassName?.()==="GroundMesh"}i(fn,"isGroundMesh");function L(e){return e.getClassName?.()==="TransformNode"}i(L,"isTransformNode");function ae(e){return e?.getClassName?.()==="Texture"}i(ae,"isTexture");function Pe(e){switch(e.getClassName?.()){case"Camera":case"FreeCamera":case"TargetCamera":case"EditorCamera":case"ArcRotateCamera":case"UniversalCamera":return!0}return!1}i(Pe,"isCamera");function gn(e){switch(e.getClassName?.()){case"FreeCamera":case"UniversalCamera":return!0}return!1}i(gn,"isFreeCamera");function yn(e){return e.getClassName?.()==="ArcRotateCamera"}i(yn,"isArcRotateCamera");function Sn(e){return e.getClassName?.()==="PointLight"}i(Sn,"isPointLight");function hn(e){return e.getClassName?.()==="DirectionalLight"}i(hn,"isDirectionalLight");function bn(e){return e.getClassName?.()==="SpotLight"}i(bn,"isSpotLight");function Pn(e){return e.getClassName?.()==="HemisphericLight"}i(Pn,"isHemisphericLight");function Ot(e){switch(e.getClassName?.()){case"Light":case"PointLight":case"SpotLight":case"DirectionalLight":case"HemisphericLight":return!0}return!1}i(Ot,"isLight");function Ae(e){return e.getClassName?.()==="ClusteredLightContainer"}i(Ae,"isClusteredLightContainer");function j(e){return K(e)||L(e)||Ot(e)||Pe(e)}i(j,"isNode");function Re(e){return e.getClassName?.()==="Scene"}i(Re,"isScene");function _e(e){return e.getClassName?.()==="ParticleSystem"}i(_e,"isParticleSystem");function An(e){return e.getClassName?.()==="GPUParticleSystem"}i(An,"isGPUParticleSystem");function Fe(e){switch(e.getClassName?.()){case"ParticleSystem":case"GPUParticleSystem":return!0}return!1}i(Fe,"isAnyParticleSystem");function Le(e){return e.getClassName?.()==="Sprite"}i(Le,"isSprite");function k(e){return L(e)&&e.isSoundNode===!0}i(k,"isSoundNode");function Ve(e){e.meshes.forEach(r=>{D(r)&&r.getLODLevels().forEach(t=>{t.mesh&&(t.mesh.originalDistanceOrScreenCoverage=t.distanceOrScreenCoverage)})})}i(Ve,"configureMeshDistanceOrScreenCoverage");function Be(e,r){r.meshes.forEach(t=>{D(t)&&t.getLODLevels().forEach(n=>{if(n.mesh?.originalDistanceOrScreenCoverage)switch(e){case"very-low":n.distanceOrScreenCoverage=n.mesh.originalDistanceOrScreenCoverage*.125;break;case"low":n.distanceOrScreenCoverage=n.mesh.originalDistanceOrScreenCoverage*.25;break;case"medium":n.distanceOrScreenCoverage=n.mesh.originalDistanceOrScreenCoverage*.5;break;case"high":n.distanceOrScreenCoverage=n.mesh.originalDistanceOrScreenCoverage;break}})})}i(Be,"applyMeshesLODQuality");function M(e){let r=1;for(;r<=e;)r<<=1;return r>>1}i(M,"getPowerOfTwoUntil");var Tt=require("babylonjs"),Dt=require("babylonjs");function Ge(e){e.lights.forEach(r=>{let t=r.getShadowGenerator()?.getShadowMap();t&&(t.renderListPredicate=n=>Tt.Vector3.Distance(n.getAbsolutePosition(),r.getAbsolutePosition())<=r.range)})}i(Ge,"configureShadowMapRenderListPredicate");async function xe(e){e.executeWhenReady(()=>{e.lights.forEach(r=>{let t=r.getShadowGenerator()?.getShadowMap();t&&(t.refreshRate=r.metadata?.refreshRate??Dt.RenderTargetTexture.REFRESHRATE_RENDER_ONEVERYFRAME)})})}i(xe,"configureShadowMapRefreshRate");function xn(e,r){r.lights.forEach(t=>{let n=t.getShadowGenerator(),o=n?.getShadowMap();if(n?.originalMapSize){let s=n.originalMapSize;switch(e){case"medium":s=s*.5;break;case"low":s=s*.25;break;case"very-low":s=s*.125;break}s=Math.max(128,M(s)),o?.getSize().width!==s&&o.resize(s)}}),xe(r)}i(xn,"applyShadowsQuality");var Mt=require("babylonjs"),wt=require("babylonjs"),Nt=require("babylonjs"),C=null,Q=new Map;function vn(){return C}i(vn,"getVLSPostProcess");function Cn(e){C=e}i(Cn,"setVLSPostProcessRef");function Ke(e){C&&e.activeCamera&&(C.dispose(e.activeCamera),C=null)}i(Ke,"disposeVLSPostProcess");function Rt(e,r){return r??=e.meshes.find(t=>D(t)),C=new Nt.VolumetricLightScatteringPostProcess("VolumetricLightScatteringPostProcess",1,e.activeCamera,r,100,wt.Texture.BILINEAR_SAMPLINGMODE,e.getEngine(),!1),C}i(Rt,"createVLSPostProcess");function ke(){return C?{meshId:C.mesh?.id,exposure:C.exposure,decay:C.decay,weight:C.weight,density:C.density,invert:C.invert,useCustomMeshPosition:C.useCustomMeshPosition,customMeshPosition:C.customMeshPosition.asArray()}:null}i(ke,"serializeVLSPostProcess");function ze(e,r){let t=null;if(r.meshId){let o=e.getMeshById(r.meshId);o&&D(o)&&(t=o)}let n=Rt(e,t);return n.exposure=r.exposure,n.decay=r.decay,n.weight=r.weight,n.density=r.density,n.invert=r.invert,n.useCustomMeshPosition=r.useCustomMeshPosition,n.customMeshPosition.copyFrom(Mt.Vector3.FromArray(r.customMeshPosition)),n}i(ze,"parseVLSPostProcess");var _t=require("babylonjs"),h=null,U=new Map;function In(){return h}i(In,"getSSRRenderingPipeline");function En(e){h=e}i(En,"setSSRRenderingPipelineRef");function $e(){h&&(h.dispose(),h=null)}i($e,"disposeSSRRenderingPipeline");function Ft(e,r){return h=new _t.SSRRenderingPipeline("SSRRenderingPipeline",e,[r]),h.samples=4,h}i(Ft,"createSSRRenderingPipeline");function je(){return h?{samples:h.samples,step:h.step,thickness:h.thickness,strength:h.strength,reflectionSpecularFalloffExponent:h.reflectionSpecularFalloffExponent,maxSteps:h.maxSteps,maxDistance:h.maxDistance,roughnessFactor:h.roughnessFactor,reflectivityThreshold:h.reflectivityThreshold,blurDispersionStrehgth:h.blurDispersionStrength,clipToFrustum:h.clipToFrustum,enableSmoothReflections:h.enableSmoothReflections,enableAutomaticThicknessComputation:h.enableAutomaticThicknessComputation,attenuateFacingCamera:h.attenuateFacingCamera,attenuateScreenBorders:h.attenuateScreenBorders,attenuateIntersectionDistance:h.attenuateIntersectionDistance,attenuateBackfaceReflection:h.attenuateBackfaceReflection,blurDownsample:h.blurDownsample,selfCollisionNumSkip:h.selfCollisionNumSkip,ssrDownsample:h.ssrDownsample,backfaceDepthTextureDownsample:h.backfaceDepthTextureDownsample}:null}i(je,"serializeSSRRenderingPipeline");function Qe(e,r,t){if(h)return h;let n=Ft(e,r);return n.samples=t.samples,n.step=t.step,n.thickness=t.thickness,n.strength=t.strength,n.reflectionSpecularFalloffExponent=t.reflectionSpecularFalloffExponent,n.maxSteps=t.maxSteps,n.maxDistance=t.maxDistance,n.roughnessFactor=t.roughnessFactor,n.reflectivityThreshold=t.reflectivityThreshold,n.blurDispersionStrength=t.blurDispersionStrehgth,n.clipToFrustum=t.clipToFrustum,n.enableSmoothReflections=t.enableSmoothReflections,n.enableAutomaticThicknessComputation=t.enableAutomaticThicknessComputation,n.attenuateFacingCamera=t.attenuateFacingCamera,n.attenuateScreenBorders=t.attenuateScreenBorders,n.attenuateIntersectionDistance=t.attenuateIntersectionDistance,n.attenuateBackfaceReflection=t.attenuateBackfaceReflection,n.blurDownsample=t.blurDownsample,n.selfCollisionNumSkip=t.selfCollisionNumSkip,n.ssrDownsample=t.ssrDownsample,n.backfaceDepthTextureDownsample=t.backfaceDepthTextureDownsample,n}i(Qe,"parseSSRRenderingPipeline");var Lt=require("babylonjs"),I=null,W=new Map;function On(){return I}i(On,"getTAARenderingPipeline");function Tn(e){I=e}i(Tn,"setTAARenderingPipelineRef");function Ue(){I&&(I.dispose(),I=null)}i(Ue,"disposeTAARenderingPipeline");function Vt(e,r){return I=new Lt.TAARenderingPipeline("TAARenderingPipeline",e,[r]),I.samples=4,I}i(Vt,"createTAARenderingPipeline");function We(){return I?{factor:I.factor,samples:I.samples,clampHistory:I.clampHistory,reprojectHistory:I.reprojectHistory,disableOnCameraMove:I.disableOnCameraMove}:null}i(We,"serializeTAARenderingPipeline");function Ye(e,r,t){if(I)return I;let n=Vt(e,r);return n.factor=t.factor,n.samples=t.samples,n.clampHistory=t.clampHistory,n.reprojectHistory=t.reprojectHistory,n.disableOnCameraMove=t.disableOnCameraMove,n}i(Ye,"parseTAARenderingPipeline");var Bt=require("babylonjs"),b=null,Y=new Map;function Dn(){return b}i(Dn,"getSSAO2RenderingPipeline");function Mn(e){b=e}i(Mn,"setSSAO2RenderingPipelineRef");function He(){b&&(b.dispose(),b=null)}i(He,"disposeSSAO2RenderingPipeline");function Gt(e,r){return b=new Bt.SSAO2RenderingPipeline("SSAO2RenderingPipeline",e,1,[r]),b.samples=4,b}i(Gt,"createSSAO2RenderingPipeline");function qe(){return b?{radius:b.radius,totalStrength:b.totalStrength,samples:b.samples,maxZ:b.maxZ,minZAspect:b.minZAspect,epsilon:b.epsilon,textureSamples:b.textureSamples,bypassBlur:b.bypassBlur,bilateralSamples:b.bilateralSamples,bilateralSoften:b.bilateralSoften,bilateralTolerance:b.bilateralTolerance,expensiveBlur:b.expensiveBlur}:null}i(qe,"serializeSSAO2RenderingPipeline");function Je(e,r,t){if(b)return b;let n=Gt(e,r);return n.radius=t.radius,n.totalStrength=t.totalStrength,n.samples=t.samples,n.maxZ=t.maxZ,n.minZAspect=t.minZAspect,n.epsilon=t.epsilon,n.textureSamples=t.textureSamples,n.bypassBlur=t.bypassBlur,n.bilateralSamples=t.bilateralSamples,n.bilateralSoften=t.bilateralSoften,n.bilateralTolerance=t.bilateralTolerance,n.expensiveBlur=t.expensiveBlur,n}i(Je,"parseSSAO2RenderingPipeline");var Kt=require("babylonjs"),E=null,H=new Map;function Ze(){return E}i(Ze,"getMotionBlurPostProcess");function wn(e){E=e}i(wn,"setMotionBlurPostProcessRef");function Xe(){E&&(E.dispose(),E=null)}i(Xe,"disposeMotionBlurPostProcess");function kt(e,r){return E=new Kt.MotionBlurPostProcess("MotionBlurPostProcess",e,1,r),E.motionStrength=1,E.isObjectBased=!0,E}i(kt,"createMotionBlurPostProcess");function et(){return E?{isObjectBased:E.isObjectBased,motionStrength:E.motionStrength,motionBlurSamples:E.motionBlurSamples}:null}i(et,"serializeMotionBlurPostProcess");function tt(e,r,t){if(E)return E;let n=kt(e,r);return n.isObjectBased=t.isObjectBased,n.motionStrength=t.motionStrength,n.motionBlurSamples=t.motionBlurSamples,n}i(tt,"parseMotionBlurPostProcess");var zt=require("babylonjs"),rt=require("babylonjs"),$t=require("babylonjs"),jt=require("babylonjs"),Qt=require("babylonjs"),u=null,q=new Map;function le(){return u}i(le,"getDefaultRenderingPipeline");function Nn(e){u=e}i(Nn,"setDefaultRenderingPipelineRef");function nt(){u&&(u.dispose(),u=null)}i(nt,"disposeDefaultRenderingPipeline");function Ut(e,r){return u=new Qt.DefaultRenderingPipeline("DefaultRenderingPipeline",!0,e,[r]),u.samples=4,u.depthOfField.lensSize=512,u.depthOfField.fStop=.25,u.depthOfField.focusDistance=55e3,u}i(Ut,"createDefaultRenderingPipeline");function ot(){return u?{samples:u.samples,fxaaEnabled:u.fxaaEnabled,imageProcessingEnabled:u.imageProcessingEnabled,exposure:u.imageProcessing?.exposure,contrast:u.imageProcessing?.contrast,fromLinearSpace:u.imageProcessing?.fromLinearSpace,toneMappingEnabled:u.imageProcessing?.toneMappingEnabled,toneMappingType:u.imageProcessing?.toneMappingType,ditheringEnabled:u.imageProcessing?.ditheringEnabled,ditheringIntensity:u.imageProcessing?.ditheringIntensity,bloomEnabled:u.bloomEnabled,bloomThreshold:u.bloomThreshold,bloomWeight:u.bloomWeight,bloomScale:u.bloomScale,bloomKernel:u.bloomKernel,sharpenEnabled:u.sharpenEnabled,sharpenEdgeAmount:u.sharpen.edgeAmount,sharpenColorAmount:u.sharpen.colorAmount,grainEnabled:u.grainEnabled,grainIntensity:u.grain.intensity,grainAnimated:u.grain.animated,depthOfFieldEnabled:u.depthOfFieldEnabled,depthOfFieldBlurLevel:u.depthOfFieldBlurLevel,lensSize:u.depthOfField.lensSize,fStop:u.depthOfField.fStop,focusDistance:u.depthOfField.focusDistance,focalLength:u.depthOfField.focalLength,vignetteEnabled:u.imageProcessing?.vignetteEnabled,vignetteColor:u.imageProcessing?.vignetteColor.asArray(),vignetteWeight:u.imageProcessing?.vignetteWeight,chromaticAberrationEnabled:u.chromaticAberrationEnabled,aberrationAmount:u.chromaticAberration.aberrationAmount,radialIntensity:u.chromaticAberration.radialIntensity,direction:u.chromaticAberration.direction.asArray(),centerPosition:u.chromaticAberration.centerPosition.asArray(),glowLayerEnabled:u.glowLayerEnabled,glowLayerIntensity:u.glowLayer?.intensity,glowLayerBlurKernelSize:u.glowLayer?.blurKernelSize,colorGradingEnabled:u.imageProcessing.colorGradingEnabled,colorGradingTexture:u.imageProcessing.colorGradingTexture?.serialize(),colorGradingWithGreenDepth:u.imageProcessing.imageProcessingConfiguration.colorGradingWithGreenDepth,colorCurvesEnabled:u.imageProcessing.colorCurvesEnabled,globalHue:u.imageProcessing.colorCurves?.globalHue,globalDensity:u.imageProcessing.colorCurves?.globalDensity,globalExposure:u.imageProcessing.colorCurves?.globalExposure,globalSaturation:u.imageProcessing.colorCurves?.globalSaturation,highlightsHue:u.imageProcessing.colorCurves?.highlightsHue,highlightsDensity:u.imageProcessing.colorCurves?.highlightsDensity,highlightsExposure:u.imageProcessing.colorCurves?.highlightsExposure,highlightsSaturation:u.imageProcessing.colorCurves?.highlightsSaturation,midtonesHue:u.imageProcessing.colorCurves?.midtonesHue,midtonesDensity:u.imageProcessing.colorCurves?.midtonesDensity,midtonesExposure:u.imageProcessing.colorCurves?.midtonesExposure,midtonesSaturation:u.imageProcessing.colorCurves?.midtonesSaturation,shadowsHue:u.imageProcessing.colorCurves?.shadowsHue,shadowsDensity:u.imageProcessing.colorCurves?.shadowsDensity,shadowsExposure:u.imageProcessing.colorCurves?.shadowsExposure,shadowsSaturation:u.imageProcessing.colorCurves?.shadowsSaturation}:null}i(ot,"serializeDefaultRenderingPipeline");function it(e,r,t,n){if(u)return u;let o=Ut(e,r);if(o.samples=t.samples,o.fxaaEnabled=t.fxaaEnabled,o.imageProcessingEnabled=t.imageProcessingEnabled,o.imageProcessing){if(o.imageProcessing.exposure=t.exposure,o.imageProcessing.contrast=t.contrast,o.imageProcessing.fromLinearSpace=t.fromLinearSpace,o.imageProcessing.toneMappingEnabled=t.toneMappingEnabled,o.imageProcessing.toneMappingType=t.toneMappingType,o.imageProcessing.ditheringEnabled=t.ditheringEnabled,o.imageProcessing.ditheringIntensity=t.ditheringIntensity,o.imageProcessing.vignetteEnabled=t.vignetteEnabled??!1,o.imageProcessing.vignetteColor=zt.Color4.FromArray(t.vignetteColor??[0,0,0]),o.imageProcessing.vignetteWeight=t.vignetteWeight??.3,o.imageProcessing.colorGradingEnabled=t.colorGradingEnabled??!1,o.imageProcessing.imageProcessingConfiguration.colorGradingWithGreenDepth=t.colorGradingWithGreenDepth??!0,t.colorGradingTexture){let s=null;if(t.colorGradingTexture.customType==="BABYLON.ColorGradingTexture"){let l=n+t.colorGradingTexture.name;s=new jt.ColorGradingTexture(l,e),s.level=t.colorGradingTexture.level}else{let l=$t.Texture.Parse(t.colorGradingTexture,e,n);ae(l)&&(s=l)}o.imageProcessing.colorGradingTexture=s}o.imageProcessing.colorCurvesEnabled=t.colorCurvesEnabled??!1,o.imageProcessing.colorCurves&&(o.imageProcessing.colorCurves.globalHue=t.globalHue??30,o.imageProcessing.colorCurves.globalDensity=t.globalDensity??0,o.imageProcessing.colorCurves.globalExposure=t.globalExposure??0,o.imageProcessing.colorCurves.globalSaturation=t.globalSaturation??0,o.imageProcessing.colorCurves.highlightsHue=t.highlightsHue??30,o.imageProcessing.colorCurves.highlightsDensity=t.highlightsDensity??0,o.imageProcessing.colorCurves.highlightsExposure=t.highlightsExposure??0,o.imageProcessing.colorCurves.highlightsSaturation=t.highlightsSaturation??0,o.imageProcessing.colorCurves.midtonesHue=t.midtonesHue??30,o.imageProcessing.colorCurves.midtonesDensity=t.midtonesDensity??0,o.imageProcessing.colorCurves.midtonesExposure=t.midtonesExposure??0,o.imageProcessing.colorCurves.midtonesSaturation=t.midtonesSaturation??0,o.imageProcessing.colorCurves.shadowsHue=t.shadowsHue??30,o.imageProcessing.colorCurves.shadowsDensity=t.shadowsDensity??0,o.imageProcessing.colorCurves.shadowsExposure=t.shadowsExposure??0,o.imageProcessing.colorCurves.shadowsSaturation=t.shadowsSaturation??0)}return o.bloomEnabled=t.bloomEnabled,o.bloomThreshold=t.bloomThreshold,o.bloomWeight=t.bloomWeight,o.bloomScale=t.bloomScale,o.bloomKernel=t.bloomKernel,o.sharpenEnabled=t.sharpenEnabled,o.sharpen.edgeAmount=t.sharpenEdgeAmount,o.sharpen.colorAmount=t.sharpenColorAmount,o.grainEnabled=t.grainEnabled,o.grain.intensity=t.grainIntensity,o.grain.animated=t.grainAnimated,o.depthOfFieldEnabled=t.depthOfFieldEnabled,o.depthOfFieldBlurLevel=t.depthOfFieldBlurLevel,o.depthOfField.lensSize=t.lensSize,o.depthOfField.fStop=t.fStop,o.depthOfField.focusDistance=t.focusDistance,o.depthOfField.focalLength=t.focalLength,o.chromaticAberrationEnabled=t.chromaticAberrationEnabled??!1,o.chromaticAberration.aberrationAmount=t.aberrationAmount??10,o.chromaticAberration.radialIntensity=t.radialIntensity??1,o.chromaticAberration.direction=rt.Vector2.FromArray(t.direction??[0,0]),o.chromaticAberration.centerPosition=rt.Vector2.FromArray(t.centerPosition??[0,0]),o.glowLayerEnabled=t.glowLayerEnabled??!1,o.glowLayer&&(o.glowLayer.intensity=t.glowLayerIntensity??1,o.glowLayer.blurKernelSize=t.glowLayerBlurKernelSize??32),o}i(it,"parseDefaultRenderingPipeline");function Rn(e){Y.set(e,qe()),Q.set(e,ke()),U.set(e,je()),H.set(e,et()),q.set(e,ot()),W.set(e,We())}i(Rn,"saveRenderingConfigurationForCamera");function st(e,r,t){He(),Ke(e.getScene()),$e(),Xe(),nt(),Ue();let n=Y.get(e);n&&!t?.ssao2Disabled&&Je(e.getScene(),e,n);let o=Q.get(e);o&&!t?.vlsDisabled&&ze(e.getScene(),o);let s=U.get(e);s&&!t?.ssrDisabled&&Qe(e.getScene(),e,s);let l=H.get(e);l&&!t?.motionBlurDisabled&&tt(e.getScene(),e,l);let c=q.get(e);c&&!t?.defaultPipelineDisabled&&it(e.getScene(),e,c,r);let a=W.get(e);a&&!t?.taaDisabled&&Ye(e.getScene(),e,a)}i(st,"applyRenderingConfigurationForCamera");var ce=require("babylonjs"),Wt=require("babylonjs");function Yt(e){let r=e.metadata?.physicsAggregate;if(!r)return;let t;D(e)?t=e:se(e)&&(t=e.sourceMesh);let n=new Wt.PhysicsAggregate(e,r.shape.type,{mesh:t,mass:r.massProperties.mass});n.body.setMassProperties({mass:r.massProperties.mass,inertia:r.massProperties.inertia?ce.Vector3.FromArray(r.massProperties.inertia):void 0,centerOfMass:r.massProperties.centerOfMass?ce.Vector3.FromArray(r.massProperties.centerOfMass):void 0,inertiaOrientation:r.massProperties.inertiaOrientation?ce.Quaternion.FromArray(r.massProperties.inertiaOrientation):void 0}),n.shape.density=r.shape.density,n.body.setMotionType(r.body.motionType),n.shape.material=r.material,e.physicsAggregate=n,e.metadata.physicsAggregate=void 0}i(Yt,"configurePhysicsAggregate");function Ht(e,r){(Array.isArray(r)?r:[]).forEach(n=>{let o=e.getCameraById(n.cameraId);o&&(n.ssao2RenderingPipeline&&Y.set(o,n.ssao2RenderingPipeline),n.vlsPostProcess&&Q.set(o,n.vlsPostProcess),n.ssrRenderingPipeline&&U.set(o,n.ssrRenderingPipeline),n.motionBlurPostProcess&&H.set(o,n.motionBlurPostProcess),n.defaultRenderingPipeline&&q.set(o,n.defaultRenderingPipeline),n.taaRenderingPipeline&&W.set(o,n.taaRenderingPipeline))})}i(Ht,"applyRenderingConfigurations");var qt=require("babylonjs");function J(e,r,t){return new Promise((n,o)=>{let s=new qt.WebRequest;s.open("GET",e),s.responseType=r,s.send(),s.addEventListener("progress",l=>{t?.({total:l.total,loaded:l.loaded})}),s.addEventListener("load",()=>{n(r==="text"?s.responseText:s.response)}),s.addEventListener("error",l=>o(l))})}i(J,"loadFile");async function G(e,r){let t=await J(e,"text",r);return JSON.parse(t)}i(G,"loadJsonFile");function at(e,r){let t=r.getNodeByName(e);if(t)return t;let n=r.lights.filter(o=>Ae(o));for(let o of n){let s=o.lights.find(l=>l.name===e);if(s)return s}return null}i(at,"getNodeByName");function Z(e,r){let t=r.getNodeById(e);if(t)return t;let n=r.lights.filter(o=>Ae(o));for(let o of n){let s=o.lights.find(l=>l.id===e);if(s)return s}return null}i(Z,"getNodeById");var z=require("babylonjs"),Jt=require("babylonjs");function lt(e){let r=Jt.Vector3.FromArray(e);return r.equals(z.Axis.X)?z.Axis.X:r.equals(z.Axis.Y)?z.Axis.Y:r.equals(z.Axis.Z)?z.Axis.Z:r}i(lt,"parseAxis");function Zt(e){return e.runtimeConfiguration.forEach(r=>{r.rotationAxis&&(r.rotationAxis=lt(r.rotationAxis)),r.boneOffsetAxis&&(r.boneOffsetAxis=lt(r.boneOffsetAxis))}),e}i(Zt,"parseRagdollConfiguration");function ct(e){let r={rootNodeId:e.rootNodeId,skeletonName:e.skeletonName,scalingFactor:e.scalingFactor,runtimeConfiguration:e.runtimeConfiguration.map(t=>({name:t.name,bones:t.bones,width:t.width,depth:t.depth,height:t.height,size:t.size,joint:t.joint,min:t.min,max:t.max,boxOffset:t.boxOffset,rotationAxis:t.rotationAxis?.slice(),boneOffsetAxis:t.boneOffsetAxis?.slice()}))};return Zt(r)}i(ct,"copyAndParseRagdollConfiguration");function pt(e){return e&&JSON.parse(JSON.stringify(e))}i(pt,"cloneJSObject");var or=require("babylonjs"),ve=require("babylonjs"),ir=require("babylonjs"),sr=require("babylonjs"),$=require("babylonjs"),Xt=!1,er=null,X=[],mt=new Map;function _n(e,r){let t=(0,$._GetAudioEngine)(null);return new sr._WebAudioStaticSound(e,t,r)}i(_n,"createSoundInstance");function tr(e){er?.remove(),X.length&&(er=e.onBeforeRenderObservable.add(()=>{X.forEach(r=>{r.isEnabled(!1)&&r.autoUpdateSpatial&&r.sound?._isSpatial&&r.isPlaying()&&e.activeCamera&&r.sound.spatial.update()})}))}i(tr,"registerUpdateSoundsObserver");function rr(e){e.sound?.onDisposeObservable.addOnce(()=>{let r=X.indexOf(e);r!==-1&&X.splice(r,1)}),e.onDisposeObservable.addOnce(()=>{e.sound?.dispose()})}i(rr,"registerSoundNodeEvents");function Fn(e,r){return new Promise(async(t,n)=>{if(!e.offlineProvider||!or.Database.IDBStorageEnabled)return(0,$.CreateSoundBufferAsync)(r).then(o=>t(o)).catch(o=>n(o));e.offlineProvider.loadFile(r,o=>{(0,$.CreateSoundBufferAsync)(o).then(s=>t(s)).catch(s=>n(s))},void 0,()=>{n(null)},!0)})}i(Fn,"loadSoundBuffer");function ar(e,r){if(!e.soundRelativePath||!e.sound)return;let t=_n(e.soundRelativePath,{spatialAutoUpdate:!1});t._initAsync(e.sound.buffer,{spatialAutoUpdate:!1}).then(()=>{t.volume=e.volume,t._isSpatial=e.sound._isSpatial,t._isSpatial&&(t.spatial.attach(r),t.spatial.maxDistance=e.sound.spatial.maxDistance,t.spatial.panningModel=e.sound.spatial.panningModel,t.spatial.distanceModel=e.sound.spatial.distanceModel),r.sound=t,r.isSoundNode=!0,r.soundRelativePath=e.soundRelativePath,r.autoUpdateSpatial=e.autoUpdateSpatial,X.push(r),tr(r.getScene())}),rr(r),nr(r,t)}i(ar,"configureSourceNodeFrom");function nr(e,r){Object.defineProperty(e,"volume",{get:i(()=>r.volume,"get"),set:i(t=>{r.volume=t},"set")}),Object.defineProperty(e,"playbackRate",{get:i(()=>r.playbackRate,"get"),set:i(t=>{r.playbackRate=t},"set")}),e.isPaused=()=>r.state===ve.SoundState.Paused,e.isPlaying=()=>r.state===ve.SoundState.Started,e.isStopped=()=>r.state===ve.SoundState.Stopped,e.pause=()=>r.pause(),e.resume=()=>r.resume(),e.stop=t=>r.stop(t),e.play=t=>r.play(t),e.setVolume=(t,n)=>r.setVolume(t,n),e.attachTo=(t,n,o)=>r.spatial.attach(t,n,o)}i(nr,"configureSoundNodePrototype");function lr(){Xt||(Xt=!0,(0,ir.AddParser)("SoundNode",(e,r,t,n)=>{e.transformNodes?.forEach(o=>{if(!o.isSoundNode)return;let s=t.transformNodes?.find(l=>l.id===o.id);if(s&&o.soundRelativePath){let l=`${n}${o.soundRelativePath}`;r.addPendingData(l),mt.has(l)||mt.set(l,Fn(r,l)),mt.get(l).then(a=>{(0,$.CreateSoundAsync)(o.soundRelativePath,a,{spatialAutoUpdate:!1}).then(p=>{if(r.removePendingData(l),s.isDisposed())return p.dispose();p.volume=o.volume,p._isSpatial=o.isSpatial,o.isSpatial&&(p.spatial.attach(s),p.spatial.maxDistance=o.maxDistance,p.spatial.panningModel=o.panningModel,p.spatial.distanceModel=o.distanceModel),s.sound=p,s.isSoundNode=!0,s.soundRelativePath=o.soundRelativePath,s.autoUpdateSpatial=o.autoUpdateSpatial,X.push(s),rr(s),nr(s,p),tr(r)})})}})}))}i(lr,"registerAudioParser");function ee(e){let r=new Set;e.transformNodes.forEach(t=>{if(t.metadata?.isStaticGroup){let n=t.getDescendants(!1);n.push(t),n.forEach(o=>{if((K(o)||L(o)&&!o.isWorldMatrixFrozen)&&o.freezeWorldMatrix(),K(o)){let s=o.material;s&&!s.isFrozen&&!r.has(s)&&(r.add(s),s.onBindObservable.addOnce(()=>{s.freeze()}))}})}})}i(ee,"configureTransformNodes");var pe=class{constructor(r,t){this.entries=r;this.namingId=t}static{i(this,"AdvancedAssetContainerInstantiatedEntries")}get rootNodes(){return this.entries.rootNodes}get skeletons(){return this.entries.skeletons}get animationGroups(){return this.entries.animationGroups}dispose(){this.entries.dispose()}getRootNodeByName(r){let t=`${r}-${this.namingId}`;return this.entries.rootNodes.find(n=>n.name===t)??null}getNodeByName(r){let t=`${r}-${this.namingId}`;for(let n of this.entries.rootNodes){let o=this._recursivelyGetNodeByName(t,n);if(o)return o}return null}_recursivelyGetNodeByName(r,t){if(t.name===r)return t;for(let n of t.getDescendants(!0)){let o=this._recursivelyGetNodeByName(r,n);if(o)return o}return null}getScriptByClassByObjectName(r,t){let n=this.getNodeByName(r);if(n){let o=te(n,t);if(o?.length===1)return o[0]}return null}};var ut=require("babylonjs"),me=class{static{i(this,"AdvancedAssetContainer")}container;_rootUrl;_scriptsMap;_originalDescendants=[];_nodesMap=new Map;_animationGroupsMap=new Map;constructor(r,t,n){this.container=r,this._rootUrl=t,this._scriptsMap=n,r.populateRootNodes(),r.rootNodes.forEach(o=>{this._originalDescendants.push(o,...o.getDescendants(!1))}),r.animationGroups.forEach(o=>{this._animationGroupsMap.set(o.name,o)}),this._originalDescendants.forEach(o=>{this._nodesMap.set(o,{node:o,metadata:pt(o.metadata)})})}removeDefault(){this.container.getNodes().forEach(r=>{N.get(r)?.forEach(n=>{Ce(r,n)})}),this.container.removeAllFromScene()}getRootNodeByName(r){return this.container.rootNodes.find(t=>t.name===r)??null}getScriptByClassByObjectName(r,t){let n=this.container.getNodes();for(let o of n)if(o.name===r){let s=te(o,t);if(s?.length===1)return s[0]}return null}instantiate(r){let t=ut.Tools.RandomId(),n=i(a=>a,"nameFunction"),o=this.container.instantiateModelsToScene(n,!1,{...r,predicate:i(a=>(a.name=`${a.name}@editor-tools@${t}_${a.id}`,r?.predicate?.(a)??!0),"predicate")}),s=new pe(o,t);[...this.container.transformNodes,...this.container.meshes,...this.container.lights,...this.container.cameras,...this.container.animationGroups,...this.container.skeletons].forEach(a=>{let p=a.name.split("@editor-tools@");a.name=p[0]}),o.animationGroups.forEach(a=>{let p=a.name.split("@editor-tools@");a.name=`${p[0]}-${t}`});let c=[];return o.rootNodes.forEach(a=>{c.push(a,...a.getDescendants(!1))}),c.forEach(a=>{let p=a.name.split("@editor-tools@"),m=p[1].split("_").pop();a.name=`${p[0]}-${t}`;let f=this._originalDescendants.find(d=>d.id===m);k(f)&&L(a)&&ar(f,a),a.id=ut.Tools.RandomId(),a.metadata=pt(this._nodesMap.get(f).metadata),a.metadata??={},a.metadata.originalId=m,c.forEach(d=>{d.metadata.scripts?.forEach(g=>{Object.keys(g.values||{}).forEach(y=>{let P=g.values[y];if(P.type==="entity"){P.value===m&&(P.value=a.id),P.value===f.name&&(P.value=a.name);let v=this._animationGroupsMap.get(P.value);v&&(P.value=`${v.name}-${t}`)}})})})}),c.forEach(a=>{w(this.container.scene,a,this._scriptsMap,this._rootUrl)}),ee(this.container.scene),s}};var cr=require("babylonjs"),pr=require("babylonjs");async function mr(e,r,t){let n=t.environmentIntensity,s=e.split("/").pop().replace(".scene",".babylon"),l=await(0,pr.LoadAssetContainerAsync)(s,t,{rootUrl:r,pluginExtension:".babylon"});return cr.SceneLoaderFlags.ForceFullSceneLoadingForIncremental&&t.meshes.forEach(c=>D(c)&&c._checkDelayState()),l.addAllToScene(),t.iblIntensity=n,ee(t),l}i(mr,"preloadSceneScriptAsset");async function ur(e,r){return G(`${r}${e}`)}i(ur,"preloadCommonScriptAsset");var O=new Map,ue=new Map;function Ln(e,r){ue.has(e)&&console.warn(`A parser for the extension '${e}' was already registered. It will be overwritten.`),ue.set(e,r)}i(Ln,"registerScriptAssetParser");async function dt(e,r,t){[r,...r.transformNodes,...r.meshes,...r.lights,...r.cameras].filter(c=>c.metadata?.scripts?.length).map(c=>c.metadata.scripts).flat().forEach(c=>{if(t[c.key]?.default?._SceneAssets?.forEach(p=>{O.get(p.sceneName)||O.set(p.sceneName,null)}),c.values)for(let p in c.values){if(!c.values.hasOwnProperty(p))continue;let m=c.values[p];m.type==="asset"&&m.value&&!O.get(m.value)&&O.set(m.value,null)}});let s=0;for(let c of O.values())c===null&&++s;if(s===0)return s;let l=[];return O.forEach((c,a)=>{O.get(a)||l.push(new Promise(async p=>{try{let m=a.split(".").pop();switch(m){case"scene":let f=await mr(a,e,r);r.onDisposeObservable.addOnce(()=>{f.dispose(),O.delete(a)}),O.set(a,new me(f,e,t));break;default:if(ue.has(m)){let d=ue.get(m);O.set(a,await d({key:a,rootUrl:e,scene:r}));break}else O.set(a,await ur(a,e));break}}catch(m){console.error(m)}p()}))}),await Promise.all(l),s}i(dt,"_preloadScriptsAssets");var dr=require("babylonjs"),Ie=require("babylonjs"),fr=require("babylonjs"),Ee=require("babylonjs"),gr=require("babylonjs"),yr=require("babylonjs-gui");function ft(e,r,t,n,o){let s=n.constructor;if(!s)return;s._NodesFromScene?.forEach(a=>{n[a.propertyKey.toString()]=at(a.nodeName,e)}),s._ComponentsFromScene?.length&&e.getEngine().onBeginFrameObservable.addOnce(()=>{s._ComponentsFromScene?.forEach(a=>{let p=[];if([e,...e.transformNodes,...e.meshes,...e.lights,...e.cameras].forEach(f=>{let d=gt(f,a.componentConstructor);d&&p.push(d)}),p.length>1)throw new Error(`Multiple components of type ${s._ComponentsFromScene[0].componentConstructor.name} found in scene for property "${s._ComponentsFromScene[0].propertyKey.toString()}".`);n[a.propertyKey.toString()]=p[0]??null})}),s._NodesFromDescendants?.forEach(a=>{let p=r.getDescendants?.(a.directDescendantsOnly,m=>m.name===a.nodeName)[0];n[a.propertyKey.toString()]=p??null}),s._AnimationGroups?.forEach(a=>{n[a.propertyKey.toString()]=e.getAnimationGroupByName(a.animationGroupName)}),s._SoundsFromScene?.forEach(a=>{let p=at(a.soundName,e);p&&k(p)&&(n[a.propertyKey.toString()]=p??null)}),(s._GuiFromAsset??[]).map(async a=>{let p=`${o}assets/${a.pathInAssets}`;try{let m=await G(p),f=yr.AdvancedDynamicTexture.CreateFullscreenUI(m.name,!0,e);f.parseSerializedObject(m.content,!1),n[a.propertyKey.toString()]=f,a.onGuiCreated?.(n,f)}catch(m){throw console.error(`Failed to load GUI from asset: ${p}`),m}}),s._ParticleSystemsFromScene?.forEach(a=>{let p=e.particleSystems?.find(m=>m.name!==a.particleSystemName?!1:a.directDescendantsOnly?m.emitter===r:m);n[a.propertyKey.toString()]=p}),(s._VisibleInInspector??[]).forEach(a=>{let p=a.propertyKey.toString(),m=t.values;if(!m)throw new Error(`No values found for script with key "${t.key}".`);if(m.hasOwnProperty(p)&&m[p].hasOwnProperty("value")){let f=m[p].value;switch(a.configuration.type){case"number":case"boolean":case"keymap":case"string":n[p]=f;break;case"vector2":n[p]=Ee.Vector2.FromArray(f);break;case"vector3":n[p]=Ee.Vector3.FromArray(f);break;case"color3":n[p]=Ie.Color3.FromArray(f);break;case"color4":n[p]=Ie.Color4.FromArray(f);break;case"entity":switch(a.configuration.entityType){case"node":case"sound":n[p]=Z(f,e)??null;break;case"animationGroup":n[p]=e.getAnimationGroupByName(f)??null;break;case"particleSystem":n[p]=e.particleSystems?.find(g=>g.id===f)??null;break}break;case"texture":f&&(n[p]=fr.Texture.Parse(f,e,o));break;case"asset":if(f){let g=a.configuration.assetType,S=O.get(f);switch(g){case"json":case"gui":case"scene":case"navmesh":case"cinematic":n[p]=S;break;case"ragdoll":n[p]=ct(S);break;case"nodeParticleSystemSet":let y=gr.NodeParticleSystemSet.Parse(S);n[p]=y;break;case"material":n[p]=dr.Material.Parse(S,e,o);break}}}}});let l=null,c=null;if(s._PointerEvents?.length){if(s._PointerEvents.find(m=>m.options.mode==="attachedMeshOnly")&&!K(r))throw new Error('@onPointerEvent with mode "attachedMeshOnly" can only be used on scripts attached to meshes (extends AbstractMesh).');if(s._PointerEvents.find(m=>m.options.mode!=="global")&&!j(r))throw new Error('@onPointerEvent with mode different from "global" can be used only on scripts attached to Node: Mesh, Light, Camera, TransformNode.');l=e.onPointerObservable.add(m=>{let f=null;s._PointerEvents.forEach(d=>{if(!d.eventTypes.includes(m.type))return;let g=d.propertyKey.toString();if(d.options.mode==="global")return n[g]?.(m);f=m.pickInfo,f||(f=e.pick(e.pointerX,e.pointerY,y=>y.isVisible&&y.isPickable&&y.isEnabled(!0)&&!y._masterMesh,!1));let S=f.pickedMesh;if(S&&(d.options.mode==="attachedMeshOnly"&&S===r||d.options.mode==="includeDescendants"&&j(r)&&[r,...r.getDescendants(!1)].find(v=>v===S)))return n[g]?.(m)})})}if(s._KeyboardEvents?.length&&(c=e.onKeyboardObservable.add(a=>{s._KeyboardEvents.forEach(p=>{p.eventTypes.includes(a.type)&&n[p.propertyKey.toString()]?.(a)})})),s._SpritesFromSpriteManager?.length){let a=r;if(!L(a)||!a.isSpriteManager)return console.error("@spriteFromSpriteManager decorator can only be used on SpriteManagerNode.");if(!a.spriteManager)return console.error(`SpriteManagerNode "${a.name}" has no sprite manager assigned.`);s._SpritesFromSpriteManager?.forEach(p=>{let m=a.spriteManager?.sprites.find(f=>f.name===p.spriteName)||null;n[p.propertyKey.toString()]=m})}if(s._AnimationsFromSprite?.length){if(!Le(r))return console.error("@animationFromSprite decorator can only be used in scripts attached on Sprite.");let a=r.metadata?.spriteAnimations;if(!a?.length)return console.error(`Sprite "${r.name}" has no sprite animations assigned.`);s._AnimationsFromSprite.forEach(p=>{let m=a.find(f=>f.name===p.animationName);m?n[p.propertyKey.toString()]=m??null:console.warn(`Sprite animation named "${p.animationName}" not found on sprite "${r.name}".`)})}return s._SceneAssets?.forEach(a=>{n[a.propertyKey.toString()]=O.get(a.sceneName)}),{observers:{pointerObserver:l,keyboardObserver:c}}}i(ft,"applyDecorators");function w(e,r,t,n){r.metadata?.scripts&&(r.metadata.scripts?.forEach(o=>{if(!o.enabled)return;let s=t[o.key];if(!s)return;let l=s,c={};if(s.default){l=new s.default(r);let a=ft(e,r,o,l,n);Object.assign(c,a?.observers??{})}l.onStart&&(c.onStartObserver=e.onBeforeRenderObservable.addOnce(()=>l.onStart(r))),l.onUpdate&&(c.onUpdateObserver=e.onBeforeRenderObservable.add(()=>l.onUpdate(r))),yt(r,l,o.key,c)}),r.metadata.scripts=void 0)}i(w,"_applyScriptsForObject");function Vn(e,r,t){if(t??=e.getScene?.(),!t)throw new Error("Cannot apply script on object: no scene available.");let n=new r(e),o={};return ft(t,e,{values:{}},n,""),n.onStart&&(o.onStartObserver=t.onBeforeRenderObservable.addOnce(()=>n.onStart())),n.onUpdate&&t.onBeforeRenderObservable.add(()=>n.onUpdate()),yt(e,n,"runtime",o),n}i(Vn,"applyScriptOnObject");var N=new Map;function yt(e,r,t,n){let o={key:t,observers:n,instance:r};N.has(e)?N.get(e).push(o):N.set(e,[o]),(j(e)||Fe(e)||Re(e)||k(e))&&e.onDisposeObservable.addOnce((()=>{N.get(e)?.slice()?.forEach(l=>{Ce(e,l)}),N.delete(e)}))}i(yt,"_registerScriptInstance");function Ce(e,r){r.observers.onStartObserver?.remove(),r.observers.onUpdateObserver?.remove(),r.observers.pointerObserver?.remove(),r.observers.keyboardObserver?.remove();try{r.instance.onStop?.(e)}catch(o){console.error(`Failed to call onStop for script ${r.key} on object ${e}`,o)}let t=N.get(e),n=t?.indexOf(r)??-1;n!==-1&&t?.splice(n,1)}i(Ce,"_removeRegisteredScriptInstance");function te(e,r){return N.get(e)?.filter(o=>o.instance.constructor===r)?.map(o=>o.instance)??null}i(te,"getAllScriptsByClassForObject");function gt(e,r){return te(e,r)?.[0]??null}i(gt,"getScriptByClassForObject");function Bn(e){e.setCompressedTextureExclusions([".env",".hdr",".dds"]),e.setTextureFormatToUse(["-dxt.ktx","-astc.ktx","-pvrtc.ktx","-etc1.ktx","-etc2.ktx"])}i(Bn,"configureEngineToUseCompressedTextures");function Oe(e,r){e._excludedCompressedTextures&&!e._excludedCompressedTextures?.includes(r)&&e._excludedCompressedTextures?.push(r)}i(Oe,"addExcludedCompressedTexture");function Gn(e,r,t){r.loadingTexturesQuality!==e&&(r.loadingTexturesQuality=e,r.textures.forEach(n=>{if(!ae(n)||!n.url)return;let o=Te(n,r);!o||n.url.includes(o)||n.updateURL(t+o)}))}i(Gn,"applyTexturesQuality");function Te(e,r){if(r.loadingTexturesQuality==="high"||!e.metadata?.baseSize)return e.name;let t=e.metadata.baseSize.width,n=e.metadata.baseSize.height,o=t===M(t)||n===M(n),s="";switch(r.loadingTexturesQuality){case"medium":let d=t*.66>>0,g=n*.66>>0;o&&(d=M(d),g=M(g)),s=`_${d}_${g}`;break;case"low":case"very-low":let S=t*.33>>0,y=n*.33>>0;o&&(S=M(S),y=M(y)),s=`_${S}_${y}`;break}let l=e.name;if(!l||!s)return e.name;let c=l.split("/"),a=c.pop();if(!a)return e.name;let p=a.split(".").pop(),f=`${a.replace(`.${p}`,"")}${s}.${p}`;return c.push(f),c.join("/")}i(Te,"getTextureUrl");var St=require("babylonjs"),Sr=!1;function hr(){if(Sr)return;Sr=!0;let e=St.SerializationHelper._TextureParser;St.SerializationHelper._TextureParser=(r,t,n)=>{let o=Te(r,t);if(!o)return e(r,t,n);let s=r.name;r.name=o;let l=e(r,t,n);return l&&(l.name=s),l}}i(hr,"registerTextureParser");var Pr=require("babylonjs"),De=require("babylonjs"),br=!1;function Ar(){if(br)return;br=!0;let e=(0,De.GetParser)(Pr.SceneComponentConstants.NAME_SHADOWGENERATOR);(0,De.AddParser)("ShadowGeneratorEditorPlugin",(r,t,n,o)=>{let s=new Map;r.shadowGenerators?.forEach(l=>{if(s.set(l.id,l.mapSize),t.loadingShadowsQuality!=="high"){switch(t.loadingShadowsQuality){case"medium":l.mapSize=l.mapSize*.5;break;case"low":l.mapSize=l.mapSize*.25;break;case"very-low":l.mapSize=l.mapSize*.125;break}l.mapSize=Math.max(128,M(l.mapSize))}}),e?.(r,t,n,o),t.lights.forEach(l=>{let c=l.getShadowGenerator();if(c?.getShadowMap()){let p=c.id,m=s.get(p);m&&(c.originalMapSize=m)}})})}i(Ar,"registerShadowGeneratorParser");var vr=require("babylonjs"),Cr=require("babylonjs"),xr=!1;function Ir(){xr||(xr=!0,(0,Cr.AddParser)("MorphTargetManagerEditorPlugin",(e,r,t,n)=>{e.morphTargetManagers.forEach(o=>{let l=t.meshes.find(p=>p.id===o.meshId)?.morphTargetManager;if(!l||o.targets.find(p=>!p.delayLoadingFile))return;let a=[];o.targets.forEach(p=>{if(!p.delayLoadingFile)return a.push(Promise.resolve(null));let m=`${n}${p.delayLoadingFile}`;r.addPendingData(m);let f=new vr.WebRequest;f.responseType="arraybuffer",f.open("GET",m),f.send(),a.push(new Promise(d=>{f.addEventListener("load",()=>{r.removePendingData(m),d(f.response)})}))}),Promise.all(a).then(p=>{for(let m=0,f=l.numTargets;m<f;++m){let d=l.getTarget(m),g=o.targets[m],S=p[m];if(g.positionsCount){let y=new Float32Array(S,g.positionsOffset,g.positionsCount);d._positions=y,d.setPositions(y)}if(g.normalsCount){let y=new Float32Array(S,g.normalsOffset,g.normalsCount);d._normals=y,d.setNormals(y)}if(g.tangentsCount){let y=new Float32Array(S,g.tangentsOffset,g.tangentsCount);d._tangents=y,d.setTangents(y)}if(g.uvsCount){let y=new Float32Array(S,g.uvsOffset,g.uvsCount);d._uvs=y,d.setUVs(y)}if(g.uv2sCount){let y=new Float32Array(S,g.uv2sOffset,g.uv2sCount);d._uv2s=y,d.setUV2s(y)}}for(let m=0,f=l.numTargets;m<f;++m)l.getTarget(m)._onDataLayoutChanged.notifyObservers()})})}))}i(Ir,"registerMorphTargetManagerParser");var Er=require("babylonjs");function Or(e,r){r??=new Er.ClusteredLightContainer("Clustered Light Container",[],e);let t=e.metadata?.clusteredLight;return t&&(t.lights.length>0&&(r.horizontalTiles=t.horizontalTiles,r.verticalTiles=t.verticalTiles,r.depthSlices=t.depthSlices,r.maxRange=t.maxRange),t.lights.forEach(n=>{let o=e.getLightById(n);o&&r?.addLight(o)})),r}i(Or,"configureLights");function ht(e){if(!Array.isArray(e.frames)){let r=[];for(let t of Object.keys(e.frames))r.push({filename:t,...e.frames[t]});e.frames=r}}i(ht,"normalizeAtlasJson");function Kn(e,r,t){let o=(e.metadata?.spriteAnimations??[]).find(s=>s.name===r);if(!o)return console.error(`Animation with name "${r}" not found on sprite.`);e.playAnimation(o.from,o.to,o.loop,o.delay,t)}i(Kn,"playSpriteAnimationFromName");var Dr=require("babylonjs"),Mr=require("babylonjs"),wr=require("babylonjs"),Nr=require("babylonjs"),bt=require("babylonjs"),re=require("babylonjs"),Rr=require("babylonjs"),Tr=!1;function _r(){Tr||(Tr=!0,(0,Rr.AddParser)("SpriteMapNode",(e,r,t,n)=>{e.transformNodes?.forEach(o=>{if(!o.isSpriteMap)return;let s=t.transformNodes?.find(a=>a.id===o.id);if(!s)return;s.isSpriteMap=o.isSpriteMap;let l=`${n}${o.atlasJsonRelativePath}`;r.addPendingData(l);let c=new wr.WebRequest;c.open("GET",l),c.send(),c.addEventListener("load",()=>{r.removePendingData(l);let a=JSON.parse(c.responseText);ht(a);let p=`${Dr.Tools.GetFolderPath(l)}${a.meta.image}`,m=new bt.Texture(p,r,!1,!1,bt.Texture.NEAREST_NEAREST,null,null,null,!1,Mr.Engine.TEXTUREFORMAT_RGBA),f=new Nr.SpriteMap(s.name,a,m,{layerCount:o.options.layerCount,stageSize:re.Vector2.FromArray(o.options.stageSize??[10,1]),outputSize:re.Vector2.FromArray(o.options.outputSize??[100,100]),colorMultiply:re.Vector3.FromArray(o.options.colorMultiply??[1,1,1]),flipU:!0},r);o.tiles.forEach(g=>{for(let S=0,y=g.repeatCount.x+1;S<y;++S)for(let P=0,v=g.repeatCount.y+1;P<v;++P){let T=S*(g.repeatOffset.x+1),A=P*(g.repeatOffset.y+1);f.changeTiles(g.layer,new re.Vector2(g.position.x+T,(f.options.stageSize?.y??0)-1-g.position.y-A),g.tile)}});let d=f._output;d.parent=s,s.spriteMap=f})})}))}i(_r,"registerSpriteMapParser");var Vr=require("babylonjs"),Br=require("babylonjs"),Gr=require("babylonjs"),Pt=require("babylonjs"),Kr=require("babylonjs");function Fr(e,r){r?.fogEnabled!==void 0&&(e.fogEnabled=r?.fogEnabled),r?.blendMode!==void 0&&(e.blendMode=r?.blendMode),r?.disableDepthWrite!==void 0&&(e.disableDepthWrite=r?.disableDepthWrite),r?.pixelPerfect!==void 0&&(e.pixelPerfect=r?.pixelPerfect),r?.useLogarithmicDepth!==void 0&&(e.useLogarithmicDepth=r?.useLogarithmicDepth),r?.metadata!==void 0&&(e.metadata=r?.metadata);for(let t of r?.sprites??[]){let n=Br.Sprite.Parse(t,e);n.uniqueId=t.uniqueId,n.metadata=t.metadata}}i(Fr,"parseSerializedSpriteManager");var Lr=!1;function kr(){Lr||(Lr=!0,(0,Kr.AddParser)("SpriteManagerNode",(e,r,t,n)=>{e.transformNodes?.forEach(o=>{if(!o.isSpriteManager)return;let s=t.transformNodes?.find(c=>c.id===o.id);if(!s)return;let l=r.getEngine();if(s.isSpriteManager=o.isSpriteManager,o.atlasJsonRelativePath){let c=`${n}${o.atlasJsonRelativePath}`;r.addPendingData(c);let a=new Gr.WebRequest;a.open("GET",c),a.send(),a.addEventListener("load",()=>{r.removePendingData(c);let p=JSON.parse(a.responseText),m=`${Vr.Tools.GetFolderPath(c)}${p.meta.image}`;Oe(l,m);let f=new Pt.SpriteManager(s.name,m,1e3,64,r,void 0,void 0,!0,p);s.spriteManager=f,o.spriteManager&&Fr(f,o.spriteManager)})}else if(o.spriteManager?.textureUrl){Oe(l,o.spriteManager.textureUrl);let c=`${n}${o.spriteManager.textureUrl}`,a=new Pt.SpriteManager(s.name,c,1e3,{width:o.spriteManager.cellWidth,height:o.spriteManager.cellHeight},r,void 0,void 0,!1);s.spriteManager=a,o.spriteManager&&Fr(a,o.spriteManager)}})}))}i(kr,"registerSpriteManagerParser");var $r=require("babylonjs"),jr=require("babylonjs"),zr=!1;function Qr(){zr||(zr=!0,(0,$r.AddParser)("NodeParticleSystemSetEditorPlugin",(e,r,t,n)=>{e.meshes?.forEach(o=>{if(!o.isNodeParticleSystemMesh)return;let s=t.meshes?.find(l=>l.id===o.id);s&&(o.nodeParticleSystemSet.blocks?.forEach(l=>{l.url&&(l.url=`${n}${l.url}`)}),s.nodeParticleSystemSet=jr.NodeParticleSystemSet.Parse(o.nodeParticleSystemSet),s.nodeParticleSystemSet.id=o.nodeParticleSystemSet.id,s.nodeParticleSystemSet.uniqueId=o.uniqueId,r.addPendingData(o.id),s.nodeParticleSystemSet.buildAsync(r,!1).then(l=>{r.removePendingData(o.id),s.particleSystemSet=l,l.systems.forEach(c=>{if(_e(c)){let a=c._sizeCreation.process;a&&(c._sizeCreation.process=(p,m)=>{a(p,m),p.scale.x*=100,p.scale.y*=100})}}),l.emitterNode=s,l.start()}))})}))}i(Qr,"registerNodeParticleSystemSetParser");var Yr=require("babylonjs"),At=require("babylonjs"),Hr=require("babylonjs"),qr=require("babylonjs"),Ur=new Map;async function Wr(e,r){let t=e.getWaitingItemsCount();for(;!e.isDisposed&&(!e.isReady()||e.getWaitingItemsCount()>0);){await new Promise(o=>setTimeout(o,150));let n=t-e.getWaitingItemsCount();n===t&&e.textures.forEach(o=>{o.delayLoadState===At.Constants.DELAYLOADSTATE_NONE&&(o.delayLoadState=At.Constants.DELAYLOADSTATE_LOADED)}),r(n/t)}}i(Wr,"waitForWaitingItems");async function kn(e,r,t,n,o){t.loadingQuality=o?.quality??"high",t.loadingTexturesQuality=o?.texturesQuality??t.loadingQuality,t.loadingShadowsQuality=o?.shadowsQuality??t.loadingQuality,t.loadingLodsQuality=o?.lodsQuality??t.loadingQuality,lr(),hr(),Ar(),Ir(),_r(),kr(),Qr();let s=Ur.get(t)??{};if(Ur.set(t,s),await(0,Hr.AppendSceneAsync)(`${e}${r}`,t,{pluginExtension:".babylon",onProgress:i(c=>{let a=Math.min(c.loaded/c.total*.5);o?.onProgress?.(a)},"onProgress")}),await Wr(t,c=>{o?.onProgress?.(.5+c*.25)}),!o?.skipAssetsPreload){let c=0;do c=await dt(e,t,n);while(c!==0&&!t.isDisposed)}qr.SceneLoaderFlags.ForceFullSceneLoadingForIncremental&&t.meshes.forEach(c=>D(c)&&c._checkDelayState());let l=Or(t,s.clusteredLightContainer);s.clusteredLightContainer=l,await Wr(t,c=>{o?.onProgress?.(.75+c*.25)}),o?.onProgress?.(1),Ve(t),Be(t.loadingLodsQuality,t),Ge(t),xe(t),t.metadata?.rendering&&(Ht(t,t.metadata.rendering),t.activeCamera&&st(t.activeCamera,e,o?.postProcessConfiguration)),t.metadata?.physicsGravity&&t.getPhysicsEngine()?.setGravity(Yr.Vector3.FromArray(t.metadata?.physicsGravity)),w(t,t,n,e),t.transformNodes.forEach(c=>{w(t,c,n,e)}),t.meshes.forEach(c=>{Yt(c),w(t,c,n,e)}),t.lights.forEach(c=>{w(t,c,n,e)}),t.cameras.forEach(c=>{w(t,c,n,e)}),t.spriteManagers?.forEach(c=>{c.sprites.forEach(a=>{w(t,a,n,e)})}),ee(t)}i(kn,"loadScene");var Jr=require("babylonjs");async function zn(e,r,t){let n=await G(e+r),s=Jr.Tools.Instantiate(n.customType).Parse(n,t,e);return s.id=n.id,s.uniqueId=n.uniqueId,s}i(zn,"loadMaterialFromFile");function $n(e){return Promise.all(e.materials.map(async r=>{let t=r.getBindedMeshes();await Promise.all(t.map(async n=>{se(n)||await r.forceCompilationAsync(n,{clipPlane:!!e.clipPlane,useInstances:n.hasInstances})}))}))}i($n,"forceCompileAllSceneMaterials");var V=require("babylonjs");function de(e){if(!isNaN(parseFloat(e))&&isFinite(e))return V.Animation.ANIMATIONTYPE_FLOAT;switch(e?.getClassName?.()){case"Vector2":return V.Animation.ANIMATIONTYPE_VECTOR2;case"Vector3":return V.Animation.ANIMATIONTYPE_VECTOR3;case"Quaternion":return V.Animation.ANIMATIONTYPE_QUATERNION;case"Color3":return V.Animation.ANIMATIONTYPE_COLOR3;case"Color4":return V.Animation.ANIMATIONTYPE_COLOR4;case"Size":return V.Animation.ANIMATIONTYPE_SIZE;case"Matrix":return V.Animation.ANIMATIONTYPE_MATRIX}return null}i(de,"getAnimationTypeForObject");var Zr=require("babylonjs");function jn(e){return function(r,t){let n=r.constructor;n._NodesFromScene??=[],n._NodesFromScene.push({propertyKey:t,nodeName:e})}}i(jn,"nodeFromScene");function Qn(e){return function(r,t){let n=r.constructor;n._ComponentsFromScene??=[],n._ComponentsFromScene.push({propertyKey:t,componentConstructor:e})}}i(Qn,"componentFromScene");function Un(e,r=!1){return function(t,n){let o=t.constructor;o._NodesFromDescendants??=[],o._NodesFromDescendants.push({propertyKey:n,nodeName:e,directDescendantsOnly:r})}}i(Un,"nodeFromDescendants");function Wn(e){return function(r,t){let n=r.constructor;n._AnimationGroups??=[],n._AnimationGroups.push({animationGroupName:e,propertyKey:t})}}i(Wn,"animationGroupFromScene");function Yn(e){return function(r,t){let n=r.constructor;n._SceneAssets??=[],n._SceneAssets.push({sceneName:e,propertyKey:t})}}i(Yn,"sceneAsset");function Hn(e,r){return function(t,n){let o=t.constructor;o._GuiFromAsset??=[],o._GuiFromAsset.push({propertyKey:n,pathInAssets:e,onGuiCreated:r})}}i(Hn,"guiFromAsset");function qn(e){return function(r,t){let n=r.constructor;n._SoundsFromScene??=[],n._SoundsFromScene.push({propertyKey:t,soundName:e})}}i(qn,"soundFromScene");function Jn(e,r=!1){return function(t,n){let o=t.constructor;o._ParticleSystemsFromScene??=[],o._ParticleSystemsFromScene.push({propertyKey:n,particleSystemName:e,directDescendantsOnly:r})}}i(Jn,"particleSystemFromScene");function Zn(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"boolean"}})}}i(Zn,"visibleAsBoolean");function Xn(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"string"}})}}i(Xn,"visibleAsString");function eo(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"number"}})}}i(eo,"visibleAsNumber");function to(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"vector2"}})}}i(to,"visibleAsVector2");function ro(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"vector3"}})}}i(ro,"visibleAsVector3");function no(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"color3"}})}}i(no,"visibleAsColor3");function oo(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"color4"}})}}i(oo,"visibleAsColor4");function io(e,r,t){return function(n,o){let s=n.constructor;s._VisibleInInspector??=[],s._VisibleInInspector.push({label:r,propertyKey:o,configuration:{...t,entityType:e,type:"entity"}})}}i(io,"visibleAsEntity");function so(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"texture"}})}}i(so,"visibleAsTexture");function ao(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"keymap"}})}}i(ao,"visibleAsKeyMap");function lo(e,r,t){return function(n,o){let s=n.constructor;s._VisibleInInspector??=[],s._VisibleInInspector.push({label:r,propertyKey:o,configuration:{...t,assetType:e,type:"asset"}})}}i(lo,"visibleAsAsset");function co(e,r){return function(t,n){let o=t.constructor;o._PointerEvents??=[],o._PointerEvents.push({propertyKey:n,options:{mode:"global",...r??{}},eventTypes:Array.isArray(e)?e:[e]})}}i(co,"onPointerEvent");function po(e){return function(r,t){let n=r.constructor;n._KeyboardEvents??=[],n._KeyboardEvents.push({propertyKey:t,eventTypes:Array.isArray(e)?e:[e]})}}i(po,"onKeyboardEvent");function mo(e){return function(r,t){let n=r.constructor;n._SpritesFromSpriteManager??=[],n._SpritesFromSpriteManager.push({propertyKey:t,spriteName:e})}}i(mo,"spriteFromSpriteManager");function uo(e){return function(r,t){let n=r.constructor;n._AnimationsFromSprite??=[],n._AnimationsFromSprite.push({propertyKey:t,animationName:e})}}i(uo,"animationFromSprite");var Me=require("babylonjs");function Iu(e,r){let t;return e===Me.Animation.ANIMATIONTYPE_FLOAT?t=r.value:t=r.value.clone(),{value:t,frame:r.frame,interpolation:r.interpolation,inTangent:e===Me.Animation.ANIMATIONTYPE_FLOAT?r.inTangent:r.inTangent?.clone(),outTangent:e===Me.Animation.ANIMATIONTYPE_FLOAT?r.outTangent:r.outTangent?.clone()}}i(Iu,"cloneKey");function we(e,r){let t=r.split("."),n=e;for(let o=0;o<t.length;++o)n=n[t[o]];return n}i(we,"getPropertyValue");function xt(e,r,t){let n=null;e.onAnimationGroupPlayObservable.add(()=>{n=r.onAfterAnimationsObservable.add(()=>{t()})}),e.onAnimationGroupPauseObservable.add(()=>{n&&(r.onAfterAnimationsObservable.remove(n),n=null)}),e.onAnimationGroupEndObservable.add(()=>{n&&(r.onAfterAnimationsObservable.remove(n),n=null)})}i(xt,"registerAfterAnimationCallback");var B=require("babylonjs"),Ne=require("babylonjs"),_=require("babylonjs");function fo(e,r){return{name:e.name,framesPerSecond:e.framesPerSecond,outputFramesPerSecond:e.outputFramesPerSecond,tracks:e.tracks.map(t=>{let n=null,o=null;if(t.node?(n=Z(t.node,r),n||(n=r.particleSystems?.find(l=>l.id===t.node)??null)):t.defaultRenderingPipeline&&(n=le()),t.propertyPath){let l=we(n,t.propertyPath);o=de(l)}let s=null;return t.sound&&(s=Z(t.sound,r)),{node:n,sound:s,propertyPath:t.propertyPath,defaultRenderingPipeline:t.defaultRenderingPipeline,animationGroup:t.animationGroup?r.getAnimationGroupByName(t.animationGroup):null,animationGroups:t.animationGroups,sounds:t.sounds,soundVolume:vt(t.soundVolume??[],B.Animation.ANIMATIONTYPE_FLOAT),keyFrameEvents:t.keyFrameEvents?.map(l=>{let c={...l};switch(l.data?.type){case"set-enabled":c.data={type:"set-enabled",value:l.data.value,node:Z(l.data.node,r)};break;case"apply-impulse":c.data={type:"apply-impulse",radius:l.data.radius,mesh:r.getMeshById(l.data.mesh),force:_.Vector3.FromArray(l.data.force),contactPoint:_.Vector3.FromArray(l.data.contactPoint)};break}return c}),keyFrameAnimations:n&&o!==null&&vt(t.keyFrameAnimations??[],o)}})}}i(fo,"parseCinematic");function R(e,r){if(e===null)return null;if(e!==void 0)switch(r){case B.Animation.ANIMATIONTYPE_FLOAT:return e;case B.Animation.ANIMATIONTYPE_VECTOR2:return _.Vector2.FromArray(e);case B.Animation.ANIMATIONTYPE_VECTOR3:return _.Vector3.FromArray(e);case B.Animation.ANIMATIONTYPE_QUATERNION:return _.Quaternion.FromArray(e);case B.Animation.ANIMATIONTYPE_COLOR3:return Ne.Color3.FromArray(e);case B.Animation.ANIMATIONTYPE_COLOR4:return Ne.Color4.FromArray(e);case B.Animation.ANIMATIONTYPE_MATRIX:return _.Matrix.FromArray(e)}}i(R,"parseCinematicKeyValue");function vt(e,r){return e?.map(t=>{let n=t.type==="key"?t:null;if(n)return{...n,value:R(n.value,r),inTangent:R(n.inTangent,r),outTangent:R(n.outTangent,r)};let o=t.type==="cut"?t:null;if(o)return{...o,key1:{...o.key1,value:R(o.key1.value,r),inTangent:R(o.key1.inTangent,r),outTangent:R(o.key1.outTangent,r)},key2:{...o.key2,value:R(o.key2.value,r),inTangent:R(o.key2.inTangent,r),outTangent:R(o.key2.outTangent,r)}};throw new Error(`Unknown key frame type: ${t.type}`)})}i(vt,"parseKeyFrameAnimations");function Xr(e,r){e.onEventObservable.notifyObservers(r.eventName)}i(Xr,"handleApplyEvent");function en(e){e.node?.setEnabled(e.value)}i(en,"handleSetEnabledEvent");var Ct=require("babylonjs"),tn=Ct.Vector3.Zero();function rn(e,r){let t=r.mesh?[r.mesh]:e.meshes.filter(n=>n.physicsAggregate);r.radius&&(t=t.filter(n=>{let o=n.getBoundingInfo().boundingBox.centerWorld;return Ct.Vector3.Distance(o,r.contactPoint)<=r.radius})),t.forEach(n=>{if(n.physicsAggregate?.body){let o=r.contactPoint.subtract(n.getBoundingInfo().boundingBox.centerWorld);o.multiplyInPlace(r.force),n.physicsAggregate.body.setLinearVelocity(tn),n.physicsAggregate.body.setAngularVelocity(tn),n.physicsAggregate.body.applyImpulse(o.negateInPlace(),r.contactPoint)}})}i(rn,"handleApplyImpulseEvent");var nn=require("babylonjs"),on=require("babylonjs"),fe=class extends on.AnimationGroup{static{i(this,"Cinematic")}onEventObservable=new nn.Observable;onEvent(r,t){this.onEventObservable.add(n=>{r===n&&t()})}};function It(e){return e.type==="key"}i(It,"isCinematicKey");function ne(e){return e.type==="cut"}i(ne,"isCinematicKeyCut");function go(e){return e.type==="event"}i(go,"isCinematicKeyEvent");function yo(e){return e.type==="group"}i(yo,"isCinematicGroup");function So(e){return e.type==="sound"}i(So,"isCinematicSound");var x=require("babylonjs"),oe=require("babylonjs");function ho(e,r,t){let n=new fe(e.name,r);return e.tracks.forEach(o=>{let s=o.animationGroup;if(s&&o.animationGroups?.length){let d=s.clone(`${s.name}-cinematic-temp`),g=r.animationGroups.indexOf(d);g!==-1&&r.animationGroups.splice(g,1),n.onAnimationEndObservable.add(()=>{s.stop(),d.stop()});let S=o.animationGroups.reduce((T,A)=>Math.min(T,A.frame),Number.MAX_VALUE)??0,y=o.animationGroups.reduce((T,A)=>Math.max(T,A.frame+A.endFrame),0)??0,P={frame:S},v=new x.Animation(d.name,"frame",60,x.Animation.ANIMATIONTYPE_FLOAT,x.Animation.ANIMATIONLOOPMODE_CYCLE,!1);if(v.setKeys([{frame:S,value:0},{frame:y,value:y}]),o.animationGroups.forEach(T=>{v.addEvent(new oe.AnimationEvent(T.frame,()=>{let A=T.repeatCount??0;if(d.to=T.endFrame,d.speedRatio=T.speed,d.stop(),d.play(A>0),d.from!==T.startFrame&&d.goToFrame(T.startFrame),A){let ie=0;d.onAnimationGroupLoopObservable.add(()=>{++ie,ie>A&&d.stop()})}}))}),n.addTargetedAnimation(v,P),(o.animationGroupWeight?.length??0)>=2&&o.animationGroupWeight.find(A=>ne(A)?A.key1.value!==1||A.key2.value!==1:A.value!==1)){let A={weight:0},ie=new x.Animation(`${d.name}-weights`,"weight",60,x.Animation.ANIMATIONTYPE_FLOAT,x.Animation.ANIMATIONLOOPMODE_CYCLE,!1),Se=[];o.animationGroupWeight.forEach(he=>{ne(he)?(Se.push(he.key1),Se.push(he.key2)):Se.push(he)}),ie.setKeys(Se),n.addTargetedAnimation(ie,A),xt(n,r,()=>{d.weight=A.weight})}}let l=o.sound;if(!t?.ignoreSounds&&l&&l.sound?.buffer&&o.sounds?.length){let d={dummy:0,volume:0},g=new x.Animation(l.name,"dummy",60,x.Animation.ANIMATIONTYPE_FLOAT,x.Animation.ANIMATIONLOOPMODE_CYCLE,!1),S=0;if(o.sounds?.forEach(y=>{let P=y.endFrame-y.startFrame;S=Math.max(S,y.frame+P),g.addEvent(new oe.AnimationEvent(y.frame,v=>{let A=(v-y.frame+y.startFrame)/e.framesPerSecond;l.play({startOffset:A})},!1)),g.addEvent(new oe.AnimationEvent(y.frame+P,()=>{l.stop()}))}),g.setKeys([{frame:0,value:0},{frame:S,value:S}]),n.addTargetedAnimation(g,d),(o.soundVolume?.length??0)>=2){let y=new x.Animation(l.name,"volume",60,x.Animation.ANIMATIONTYPE_FLOAT,x.Animation.ANIMATIONLOOPMODE_CYCLE,!1),P=[];o.soundVolume.forEach(v=>{ne(v)?(P.push(v.key1),P.push(v.key2)):P.push(v)}),y.setKeys(P),n.addTargetedAnimation(y,d),xt(n,r,()=>{l.volume=d.volume})}}if(o.keyFrameEvents){let d={dummy:0},g=new x.Animation("events","dummy",60,x.Animation.ANIMATIONTYPE_FLOAT,x.Animation.ANIMATIONLOOPMODE_CYCLE,!1),S=0;o.keyFrameEvents?.forEach(y=>{S=Math.max(S,y.frame),g.addEvent(new oe.AnimationEvent(y.frame,()=>{switch(y.data?.type){case"event":Xr(n,y.data);break;case"set-enabled":en(y.data);break;case"apply-impulse":rn(r,y.data);break}}))}),g.setKeys([{frame:0,value:0},{frame:S+1,value:S+1}]),n.addTargetedAnimation(g,d)}let c=o.defaultRenderingPipeline?le():o.node;if(!c||!o.propertyPath||!o.keyFrameAnimations)return;let a=we(c,o.propertyPath),p=de(a);if(p===null)return;let m=new x.Animation(o.propertyPath,o.propertyPath,60,p,x.Animation.ANIMATIONLOOPMODE_CYCLE,!1),f=[];o.keyFrameAnimations?.forEach(d=>{if(It(d))return f.push(d);ne(d)&&(f.push(d.key1),f.push(d.key2),Pe(c)&&o.propertyPath==="position"&&m.addEvent(new oe.AnimationEvent(d.key1.frame,()=>{let g=Ze();if(!g)return;let S=g.motionStrength;g.motionStrength=0,requestAnimationFrame(()=>{g.motionStrength=S})})))}),m.setKeys(f),n.addTargetedAnimation(m,c)}),n.normalize(),n}i(ho,"generateCinematicAnimationGroup");async function Et(e,r){return new Promise((t,n)=>{let o=indexedDB.open(e,1);o.addEventListener("error",()=>n()),o.addEventListener("blocked",()=>n()),o.addEventListener("upgradeneeded",()=>{try{r(o.result)}catch(s){n(s)}}),o.addEventListener("success",()=>{t(o.result)})})}i(Et,"openIndexDB");function ge(e,r,t){return new Promise(n=>{let s=e.transaction(r).objectStore(r).get(t);s.addEventListener("error",()=>{n(null)}),s.addEventListener("success",()=>{n(s.result??null)})})}i(ge,"getFromIndexDB");async function F(e,r,t){let o=e.transaction(r,"readwrite").objectStore(r).put(t);await new Promise((s,l)=>{o.addEventListener("error",()=>l()),o.addEventListener("success",()=>s())})}i(F,"putInIndexDB");var sn=require("babylonjs");function bo(e){sn.AbstractEngine.OfflineProviderFactory=(r,t,n=!1)=>new ye(e,r,t,n)}i(bo,"setupOfflineProvider");async function Po(e,r){let t=await new Promise(n=>{let o=new ye(e,r,s=>n(s?o:null),!1)});return await t?.open(),t}i(Po,"createAndOpenDatabase");var ye=class{static{i(this,"Database")}enableSceneOffline=!0;enableTexturesOffline=!0;name;_database=null;_manifestVersion=null;constructor(r,t,n,o){this.name=r,o?n(!1):this._checkManifest(t,n)}async _checkManifest(r,t){try{let n=await G(`${r}.manifest?${Date.now()}`);this._manifestVersion=n.version,t(!0)}catch{this.enableSceneOffline=!1,this.enableTexturesOffline=!1,t(!1)}}async open(r,t){try{this._database=await Et(this.name,n=>{n.createObjectStore("files",{keyPath:"url"}),n.createObjectStore("images",{keyPath:"url"}),n.createObjectStore("versions",{keyPath:"url"})}),r?.()}catch{t?.()}}async loadImage(r,t){if(!this._database){t.src=r;return}let n=null;if(await this._getFileVersionForUrl(r)!==this._manifestVersion?(n=await J(r,"blob"),await Promise.all([F(this._database,"images",{url:r,data:n}),F(this._database,"versions",{url:r,version:this._manifestVersion})])):n=(await ge(this._database,"images",r))?.data??null,n!==null){let s=URL.createObjectURL(n);t.src=s}else t.src=r}async saveImage(r){if(!this._database)throw new Error("Database is not available");let t=await J(r,"blob");await Promise.all([F(this._database,"images",{url:r,data:t}),F(this._database,"versions",{url:r,version:this._manifestVersion})])}async isFileMatchingVersion(r){return await this._getFileVersionForUrl(r)===this._manifestVersion}async loadFile(r,t,n,o,s){if(!this._database)return o?.();let l=null;await this._getFileVersionForUrl(r)!==this._manifestVersion?(l=await J(r,s?"arraybuffer":"text",n),await Promise.all([F(this._database,"files",{url:r,data:l}),F(this._database,"versions",{url:r,version:this._manifestVersion})])):l=(await ge(this._database,"files",r))?.data??null,l!==null?t(l):o?.()}async saveFile(r,t,n){if(!this._database)throw new Error("Database is not available");let o=await J(r,t?"arraybuffer":"text",n);await Promise.all([F(this._database,"files",{url:r,data:o}),F(this._database,"versions",{url:r,version:this._manifestVersion})])}async _getFileVersionForUrl(r){return(await ge(this._database,"versions",r))?.version??null}};0&&(module.exports={AdvancedAssetContainer,AdvancedAssetContainerInstantiatedEntries,Cinematic,Database,NodeParticleSystemSet,_applyScriptsForObject,_preloadScriptsAssets,_registerScriptInstance,_removeRegisteredScriptInstance,addExcludedCompressedTexture,animationFromSprite,animationGroupFromScene,applyMeshesLODQuality,applyRenderingConfigurationForCamera,applyScriptOnObject,applyShadowsQuality,applyTexturesQuality,componentFromScene,configureEngineToUseCompressedTextures,configureMeshDistanceOrScreenCoverage,configureShadowMapRefreshRate,configureShadowMapRenderListPredicate,copyAndParseRagdollConfiguration,createAndOpenDatabase,createDefaultRenderingPipeline,createMotionBlurPostProcess,createSSAO2RenderingPipeline,createSSRRenderingPipeline,createTAARenderingPipeline,createVLSPostProcess,defaultPipelineCameraConfigurations,disposeDefaultRenderingPipeline,disposeMotionBlurPostProcess,disposeSSAO2RenderingPipeline,disposeSSRRenderingPipeline,disposeTAARenderingPipeline,disposeVLSPostProcess,forceCompileAllSceneMaterials,generateCinematicAnimationGroup,getAllScriptsByClassForObject,getAnimationTypeForObject,getDefaultRenderingPipeline,getFromIndexDB,getMotionBlurPostProcess,getPowerOfTwoUntil,getSSAO2RenderingPipeline,getSSRRenderingPipeline,getScriptByClassForObject,getTAARenderingPipeline,getTextureUrl,getVLSPostProcess,guiFromAsset,isAbstractMesh,isAnyParticleSystem,isArcRotateCamera,isBone,isCamera,isCinematicGroup,isCinematicKey,isCinematicKeyCut,isCinematicKeyEvent,isCinematicSound,isClusteredLightContainer,isDirectionalLight,isFreeCamera,isGPUParticleSystem,isGroundMesh,isHemisphericLight,isInstancedMesh,isLight,isMesh,isNode,isParticleSystem,isPointLight,isScene,isSoundNode,isSpotLight,isSprite,isTexture,isTransformNode,loadMaterialFromFile,loadScene,motionBlurPostProcessCameraConfigurations,nodeFromDescendants,nodeFromScene,normalizeAtlasJson,onKeyboardEvent,onPointerEvent,openIndexDB,parseCinematic,parseCinematicKeyValue,parseDefaultRenderingPipeline,parseKeyFrameAnimations,parseMotionBlurPostProcess,parseRagdollConfiguration,parseSSAO2RenderingPipeline,parseSSRRenderingPipeline,parseTAARenderingPipeline,parseVLSPostProcess,particleSystemFromScene,playSpriteAnimationFromName,putInIndexDB,registerScriptAssetParser,saveRenderingConfigurationForCamera,sceneAsset,scriptAssetsCache,scriptAssetsParsers,scriptsDictionary,serializeDefaultRenderingPipeline,serializeMotionBlurPostProcess,serializeSSAO2RenderingPipeline,serializeSSRRenderingPipeline,serializeTAARenderingPipeline,serializeVLSPostProcess,setDefaultRenderingPipelineRef,setMotionBlurPostProcessRef,setSSAO2RenderingPipelineRef,setSSRRenderingPipelineRef,setTAARenderingPipelineRef,setVLSPostProcessRef,setupOfflineProvider,soundFromScene,spriteFromSpriteManager,ssaoRenderingPipelineCameraConfigurations,ssrRenderingPipelineCameraConfigurations,taaRenderingPipelineCameraConfigurations,visibleAsAsset,visibleAsBoolean,visibleAsColor3,visibleAsColor4,visibleAsEntity,visibleAsKeyMap,visibleAsNumber,visibleAsString,visibleAsTexture,visibleAsVector2,visibleAsVector3,vlsPostProcessCameraConfigurations});
|
|
1
|
+
var be=Object.defineProperty;var yn=Object.getOwnPropertyDescriptor;var Sn=Object.getOwnPropertyNames;var hn=Object.prototype.hasOwnProperty;var i=(e,r)=>be(e,"name",{value:r,configurable:!0});var bn=(e,r)=>{for(var t in r)be(e,t,{get:r[t],enumerable:!0})},Pn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Sn(r))!hn.call(e,o)&&o!==t&&be(e,o,{get:()=>r[o],enumerable:!(n=yn(r,o))||n.enumerable});return e};var An=e=>Pn(be({},"__esModule",{value:!0}),e);var Ro={};bn(Ro,{AdvancedAssetContainer:()=>me,AdvancedAssetContainerInstantiatedEntries:()=>pe,Cinematic:()=>fe,Database:()=>ye,NodeParticleSystemSet:()=>on.NodeParticleSystemSet,_applyScriptsForObject:()=>N,_preloadScriptsAssets:()=>gt,_registerScriptInstance:()=>ht,_removeRegisteredScriptInstance:()=>Ce,addExcludedCompressedTexture:()=>Oe,animationFromSprite:()=>Co,animationGroupFromScene:()=>oo,applyMeshesLODQuality:()=>Ge,applyRenderingConfigurationForCamera:()=>at,applyScriptOnObject:()=>Yn,applyShadowsQuality:()=>Nn,applyTexturesQuality:()=>qn,componentFromScene:()=>ro,configureEngineToUseCompressedTextures:()=>Hn,configureMeshDistanceOrScreenCoverage:()=>Be,configureShadowMapRefreshRate:()=>xe,configureShadowMapRenderListPredicate:()=>Ke,copyAndParseRagdollConfiguration:()=>pt,createAndOpenDatabase:()=>Dt,createDefaultRenderingPipeline:()=>qt,createMotionBlurPostProcess:()=>Ut,createSSAO2RenderingPipeline:()=>$t,createSSRRenderingPipeline:()=>Gt,createTAARenderingPipeline:()=>kt,createVLSPostProcess:()=>Vt,defaultPipelineCameraConfigurations:()=>q,disposeDefaultRenderingPipeline:()=>ot,disposeMotionBlurPostProcess:()=>et,disposeSSAO2RenderingPipeline:()=>qe,disposeSSRRenderingPipeline:()=>je,disposeTAARenderingPipeline:()=>We,disposeVLSPostProcess:()=>ke,forceCompileAllSceneMaterials:()=>eo,generateCinematicAnimationGroup:()=>Do,getAllScriptsByClassForObject:()=>te,getAnimationTypeForObject:()=>de,getDefaultRenderingPipeline:()=>le,getFromIndexDB:()=>ge,getMotionBlurPostProcess:()=>Xe,getPowerOfTwoUntil:()=>M,getSSAO2RenderingPipeline:()=>Gn,getSSRRenderingPipeline:()=>_n,getScriptByClassForObject:()=>St,getTAARenderingPipeline:()=>Vn,getTextureUrl:()=>Te,getVLSPostProcess:()=>Rn,guiFromAsset:()=>so,isAbstractMesh:()=>K,isAnyParticleSystem:()=>_e,isArcRotateCamera:()=>In,isBone:()=>xn,isCamera:()=>Pe,isCinematicGroup:()=>Oo,isCinematicKey:()=>Ot,isCinematicKeyCut:()=>ne,isCinematicKeyEvent:()=>Eo,isCinematicSound:()=>To,isClusteredLightContainer:()=>Ae,isDecalMesh:()=>wt,isDirectionalLight:()=>On,isFreeCamera:()=>Cn,isGPUParticleSystem:()=>Mn,isGroundMesh:()=>vn,isHemisphericLight:()=>Dn,isInstancedMesh:()=>se,isLight:()=>Mt,isMesh:()=>D,isNode:()=>j,isNodeFromStaticGroup:()=>Ve,isParticleSystem:()=>Fe,isPointLight:()=>En,isScene:()=>Re,isSoundNode:()=>k,isSpotLight:()=>Tn,isSprite:()=>Le,isTexture:()=>ae,isTransformNode:()=>V,loadMaterialFromFile:()=>Xn,loadScene:()=>Zn,motionBlurPostProcessCameraConfigurations:()=>H,nodeFromDescendants:()=>no,nodeFromScene:()=>to,normalizeAtlasJson:()=>Pt,onKeyboardEvent:()=>xo,onPointerEvent:()=>Ao,openIndexDB:()=>Tt,parseCinematic:()=>Io,parseCinematicKeyValue:()=>F,parseDefaultRenderingPipeline:()=>st,parseKeyFrameAnimations:()=>It,parseMotionBlurPostProcess:()=>rt,parseRagdollConfiguration:()=>rr,parseSSAO2RenderingPipeline:()=>Ze,parseSSRRenderingPipeline:()=>Qe,parseTAARenderingPipeline:()=>He,parseVLSPostProcess:()=>$e,particleSystemFromScene:()=>lo,playSpriteAnimationFromName:()=>Jn,preloadAssetsToDatabase:()=>No,putInIndexDB:()=>L,registerScriptAssetParser:()=>Wn,saveRenderingConfigurationForCamera:()=>$n,sceneAsset:()=>io,scriptAssetsCache:()=>T,scriptAssetsParsers:()=>ue,scriptsDictionary:()=>R,serializeDefaultRenderingPipeline:()=>it,serializeMotionBlurPostProcess:()=>tt,serializeSSAO2RenderingPipeline:()=>Je,serializeSSRRenderingPipeline:()=>Ue,serializeTAARenderingPipeline:()=>Ye,serializeVLSPostProcess:()=>ze,setDefaultRenderingPipelineRef:()=>zn,setMotionBlurPostProcessRef:()=>kn,setSSAO2RenderingPipelineRef:()=>Kn,setSSRRenderingPipelineRef:()=>Ln,setStaticDecalsEnabled:()=>wn,setTAARenderingPipelineRef:()=>Bn,setVLSPostProcessRef:()=>Fn,setupOfflineProvider:()=>Mo,soundFromScene:()=>ao,spriteFromSpriteManager:()=>vo,ssaoRenderingPipelineCameraConfigurations:()=>Y,ssrRenderingPipelineCameraConfigurations:()=>Q,taaRenderingPipelineCameraConfigurations:()=>W,visibleAsAsset:()=>Po,visibleAsBoolean:()=>co,visibleAsColor3:()=>go,visibleAsColor4:()=>yo,visibleAsEntity:()=>So,visibleAsKeyMap:()=>bo,visibleAsNumber:()=>mo,visibleAsString:()=>po,visibleAsTexture:()=>ho,visibleAsVector2:()=>uo,visibleAsVector3:()=>fo,vlsPostProcessCameraConfigurations:()=>U});module.exports=An(Ro);function K(e){switch(e.getClassName?.()){case"Mesh":case"LineMesh":case"GroundMesh":case"InstancedMesh":return!0}return!1}i(K,"isAbstractMesh");function D(e){switch(e.getClassName?.()){case"Mesh":case"GroundMesh":return!0}return!1}i(D,"isMesh");function se(e){return e.getClassName?.()==="InstancedMesh"}i(se,"isInstancedMesh");function xn(e){return e.getClassName?.()==="Bone"}i(xn,"isBone");function vn(e){return e.getClassName?.()==="GroundMesh"}i(vn,"isGroundMesh");function V(e){return e.getClassName?.()==="TransformNode"}i(V,"isTransformNode");function ae(e){return e?.getClassName?.()==="Texture"}i(ae,"isTexture");function Pe(e){switch(e.getClassName?.()){case"Camera":case"FreeCamera":case"TargetCamera":case"EditorCamera":case"ArcRotateCamera":case"UniversalCamera":return!0}return!1}i(Pe,"isCamera");function Cn(e){switch(e.getClassName?.()){case"FreeCamera":case"UniversalCamera":return!0}return!1}i(Cn,"isFreeCamera");function In(e){return e.getClassName?.()==="ArcRotateCamera"}i(In,"isArcRotateCamera");function En(e){return e.getClassName?.()==="PointLight"}i(En,"isPointLight");function On(e){return e.getClassName?.()==="DirectionalLight"}i(On,"isDirectionalLight");function Tn(e){return e.getClassName?.()==="SpotLight"}i(Tn,"isSpotLight");function Dn(e){return e.getClassName?.()==="HemisphericLight"}i(Dn,"isHemisphericLight");function Mt(e){switch(e.getClassName?.()){case"Light":case"PointLight":case"SpotLight":case"DirectionalLight":case"HemisphericLight":return!0}return!1}i(Mt,"isLight");function Ae(e){return e.getClassName?.()==="ClusteredLightContainer"}i(Ae,"isClusteredLightContainer");function j(e){return K(e)||V(e)||Mt(e)||Pe(e)}i(j,"isNode");function Re(e){return e.getClassName?.()==="Scene"}i(Re,"isScene");function Fe(e){return e.getClassName?.()==="ParticleSystem"}i(Fe,"isParticleSystem");function Mn(e){return e.getClassName?.()==="GPUParticleSystem"}i(Mn,"isGPUParticleSystem");function _e(e){switch(e.getClassName?.()){case"ParticleSystem":case"GPUParticleSystem":return!0}return!1}i(_e,"isAnyParticleSystem");function Le(e){return e.getClassName?.()==="Sprite"}i(Le,"isSprite");function k(e){return V(e)&&e.isSoundNode===!0}i(k,"isSoundNode");function Ve(e){let r=e;for(;r;){if(r.metadata?.isStaticGroup)return!0;r=r.parent}return!1}i(Ve,"isNodeFromStaticGroup");function Be(e){e.meshes.forEach(r=>{D(r)&&r.getLODLevels().forEach(t=>{t.mesh&&(t.mesh.originalDistanceOrScreenCoverage=t.distanceOrScreenCoverage)})})}i(Be,"configureMeshDistanceOrScreenCoverage");function Ge(e,r){r.meshes.forEach(t=>{D(t)&&t.getLODLevels().forEach(n=>{if(n.mesh?.originalDistanceOrScreenCoverage)switch(e){case"very-low":n.distanceOrScreenCoverage=n.mesh.originalDistanceOrScreenCoverage*.125;break;case"low":n.distanceOrScreenCoverage=n.mesh.originalDistanceOrScreenCoverage*.25;break;case"medium":n.distanceOrScreenCoverage=n.mesh.originalDistanceOrScreenCoverage*.5;break;case"high":n.distanceOrScreenCoverage=n.mesh.originalDistanceOrScreenCoverage;break}})})}i(Ge,"applyMeshesLODQuality");function wt(e){return(e.metadata?.decal??null)!==null}i(wt,"isDecalMesh");function wn(e,r){r.meshes.forEach(t=>{wt(t)&&Ve(t)&&t.setEnabled(e)})}i(wn,"setStaticDecalsEnabled");function M(e){let r=1;for(;r<=e;)r<<=1;return r>>1}i(M,"getPowerOfTwoUntil");var Nt=require("babylonjs"),Rt=require("babylonjs");function Ke(e){e.lights.forEach(r=>{let t=r.getShadowGenerator()?.getShadowMap();t&&(t.renderListPredicate=n=>Nt.Vector3.Distance(n.getAbsolutePosition(),r.getAbsolutePosition())<=r.range)})}i(Ke,"configureShadowMapRenderListPredicate");async function xe(e){e.executeWhenReady(()=>{e.lights.forEach(r=>{let t=r.getShadowGenerator()?.getShadowMap();t&&(t.refreshRate=r.metadata?.refreshRate??Rt.RenderTargetTexture.REFRESHRATE_RENDER_ONEVERYFRAME)})})}i(xe,"configureShadowMapRefreshRate");function Nn(e,r){r.lights.forEach(t=>{let n=t.getShadowGenerator(),o=n?.getShadowMap();if(n?.originalMapSize){let s=n.originalMapSize;switch(e){case"medium":s=s*.5;break;case"low":s=s*.25;break;case"very-low":s=s*.125;break}s=Math.max(128,M(s)),o?.getSize().width!==s&&o.resize(s)}}),xe(r)}i(Nn,"applyShadowsQuality");var Ft=require("babylonjs"),_t=require("babylonjs"),Lt=require("babylonjs"),I=null,U=new Map;function Rn(){return I}i(Rn,"getVLSPostProcess");function Fn(e){I=e}i(Fn,"setVLSPostProcessRef");function ke(e){I&&e.activeCamera&&(I.dispose(e.activeCamera),I=null)}i(ke,"disposeVLSPostProcess");function Vt(e,r){return r??=e.meshes.find(t=>D(t)),I=new Lt.VolumetricLightScatteringPostProcess("VolumetricLightScatteringPostProcess",1,e.activeCamera,r,100,_t.Texture.BILINEAR_SAMPLINGMODE,e.getEngine(),!1),I}i(Vt,"createVLSPostProcess");function ze(){return I?{meshId:I.mesh?.id,exposure:I.exposure,decay:I.decay,weight:I.weight,density:I.density,invert:I.invert,useCustomMeshPosition:I.useCustomMeshPosition,customMeshPosition:I.customMeshPosition.asArray()}:null}i(ze,"serializeVLSPostProcess");function $e(e,r){let t=null;if(r.meshId){let o=e.getMeshById(r.meshId);o&&D(o)&&(t=o)}let n=Vt(e,t);return n.exposure=r.exposure,n.decay=r.decay,n.weight=r.weight,n.density=r.density,n.invert=r.invert,n.useCustomMeshPosition=r.useCustomMeshPosition,n.customMeshPosition.copyFrom(Ft.Vector3.FromArray(r.customMeshPosition)),n}i($e,"parseVLSPostProcess");var Bt=require("babylonjs"),h=null,Q=new Map;function _n(){return h}i(_n,"getSSRRenderingPipeline");function Ln(e){h=e}i(Ln,"setSSRRenderingPipelineRef");function je(){h&&(h.dispose(),h=null)}i(je,"disposeSSRRenderingPipeline");function Gt(e,r){return h=new Bt.SSRRenderingPipeline("SSRRenderingPipeline",e,[r]),h.samples=4,h}i(Gt,"createSSRRenderingPipeline");function Ue(){return h?{samples:h.samples,step:h.step,thickness:h.thickness,strength:h.strength,reflectionSpecularFalloffExponent:h.reflectionSpecularFalloffExponent,maxSteps:h.maxSteps,maxDistance:h.maxDistance,roughnessFactor:h.roughnessFactor,reflectivityThreshold:h.reflectivityThreshold,blurDispersionStrehgth:h.blurDispersionStrength,clipToFrustum:h.clipToFrustum,enableSmoothReflections:h.enableSmoothReflections,enableAutomaticThicknessComputation:h.enableAutomaticThicknessComputation,attenuateFacingCamera:h.attenuateFacingCamera,attenuateScreenBorders:h.attenuateScreenBorders,attenuateIntersectionDistance:h.attenuateIntersectionDistance,attenuateBackfaceReflection:h.attenuateBackfaceReflection,blurDownsample:h.blurDownsample,selfCollisionNumSkip:h.selfCollisionNumSkip,ssrDownsample:h.ssrDownsample,backfaceDepthTextureDownsample:h.backfaceDepthTextureDownsample}:null}i(Ue,"serializeSSRRenderingPipeline");function Qe(e,r,t){if(h)return h;let n=Gt(e,r);return n.samples=t.samples,n.step=t.step,n.thickness=t.thickness,n.strength=t.strength,n.reflectionSpecularFalloffExponent=t.reflectionSpecularFalloffExponent,n.maxSteps=t.maxSteps,n.maxDistance=t.maxDistance,n.roughnessFactor=t.roughnessFactor,n.reflectivityThreshold=t.reflectivityThreshold,n.blurDispersionStrength=t.blurDispersionStrehgth,n.clipToFrustum=t.clipToFrustum,n.enableSmoothReflections=t.enableSmoothReflections,n.enableAutomaticThicknessComputation=t.enableAutomaticThicknessComputation,n.attenuateFacingCamera=t.attenuateFacingCamera,n.attenuateScreenBorders=t.attenuateScreenBorders,n.attenuateIntersectionDistance=t.attenuateIntersectionDistance,n.attenuateBackfaceReflection=t.attenuateBackfaceReflection,n.blurDownsample=t.blurDownsample,n.selfCollisionNumSkip=t.selfCollisionNumSkip,n.ssrDownsample=t.ssrDownsample,n.backfaceDepthTextureDownsample=t.backfaceDepthTextureDownsample,n}i(Qe,"parseSSRRenderingPipeline");var Kt=require("babylonjs"),E=null,W=new Map;function Vn(){return E}i(Vn,"getTAARenderingPipeline");function Bn(e){E=e}i(Bn,"setTAARenderingPipelineRef");function We(){E&&(E.dispose(),E=null)}i(We,"disposeTAARenderingPipeline");function kt(e,r){return E=new Kt.TAARenderingPipeline("TAARenderingPipeline",e,[r]),E.samples=4,E}i(kt,"createTAARenderingPipeline");function Ye(){return E?{factor:E.factor,samples:E.samples,clampHistory:E.clampHistory,reprojectHistory:E.reprojectHistory,disableOnCameraMove:E.disableOnCameraMove}:null}i(Ye,"serializeTAARenderingPipeline");function He(e,r,t){if(E)return E;let n=kt(e,r);return n.factor=t.factor,n.samples=t.samples,n.clampHistory=t.clampHistory,n.reprojectHistory=t.reprojectHistory,n.disableOnCameraMove=t.disableOnCameraMove,n}i(He,"parseTAARenderingPipeline");var zt=require("babylonjs"),P=null,Y=new Map;function Gn(){return P}i(Gn,"getSSAO2RenderingPipeline");function Kn(e){P=e}i(Kn,"setSSAO2RenderingPipelineRef");function qe(){P&&(P.dispose(),P=null)}i(qe,"disposeSSAO2RenderingPipeline");function $t(e,r){return P=new zt.SSAO2RenderingPipeline("SSAO2RenderingPipeline",e,1,[r]),P.samples=4,P}i($t,"createSSAO2RenderingPipeline");function Je(){return P?{radius:P.radius,totalStrength:P.totalStrength,samples:P.samples,maxZ:P.maxZ,minZAspect:P.minZAspect,epsilon:P.epsilon,textureSamples:P.textureSamples,bypassBlur:P.bypassBlur,bilateralSamples:P.bilateralSamples,bilateralSoften:P.bilateralSoften,bilateralTolerance:P.bilateralTolerance,expensiveBlur:P.expensiveBlur}:null}i(Je,"serializeSSAO2RenderingPipeline");function Ze(e,r,t){if(P)return P;let n=$t(e,r);return n.radius=t.radius,n.totalStrength=t.totalStrength,n.samples=t.samples,n.maxZ=t.maxZ,n.minZAspect=t.minZAspect,n.epsilon=t.epsilon,n.textureSamples=t.textureSamples,n.bypassBlur=t.bypassBlur,n.bilateralSamples=t.bilateralSamples,n.bilateralSoften=t.bilateralSoften,n.bilateralTolerance=t.bilateralTolerance,n.expensiveBlur=t.expensiveBlur,n}i(Ze,"parseSSAO2RenderingPipeline");var jt=require("babylonjs"),O=null,H=new Map;function Xe(){return O}i(Xe,"getMotionBlurPostProcess");function kn(e){O=e}i(kn,"setMotionBlurPostProcessRef");function et(){O&&(O.dispose(),O=null)}i(et,"disposeMotionBlurPostProcess");function Ut(e,r){return O=new jt.MotionBlurPostProcess("MotionBlurPostProcess",e,1,r),O.motionStrength=1,O.isObjectBased=!0,O}i(Ut,"createMotionBlurPostProcess");function tt(){return O?{isObjectBased:O.isObjectBased,motionStrength:O.motionStrength,motionBlurSamples:O.motionBlurSamples}:null}i(tt,"serializeMotionBlurPostProcess");function rt(e,r,t){if(O)return O;let n=Ut(e,r);return n.isObjectBased=t.isObjectBased,n.motionStrength=t.motionStrength,n.motionBlurSamples=t.motionBlurSamples,n}i(rt,"parseMotionBlurPostProcess");var Qt=require("babylonjs"),nt=require("babylonjs"),Wt=require("babylonjs"),Yt=require("babylonjs"),Ht=require("babylonjs"),u=null,q=new Map;function le(){return u}i(le,"getDefaultRenderingPipeline");function zn(e){u=e}i(zn,"setDefaultRenderingPipelineRef");function ot(){u&&(u.dispose(),u=null)}i(ot,"disposeDefaultRenderingPipeline");function qt(e,r){return u=new Ht.DefaultRenderingPipeline("DefaultRenderingPipeline",!0,e,[r]),u.samples=4,u.depthOfField.lensSize=512,u.depthOfField.fStop=.25,u.depthOfField.focusDistance=55e3,u}i(qt,"createDefaultRenderingPipeline");function it(){return u?{samples:u.samples,fxaaEnabled:u.fxaaEnabled,imageProcessingEnabled:u.imageProcessingEnabled,exposure:u.imageProcessing?.exposure,contrast:u.imageProcessing?.contrast,fromLinearSpace:u.imageProcessing?.fromLinearSpace,toneMappingEnabled:u.imageProcessing?.toneMappingEnabled,toneMappingType:u.imageProcessing?.toneMappingType,ditheringEnabled:u.imageProcessing?.ditheringEnabled,ditheringIntensity:u.imageProcessing?.ditheringIntensity,bloomEnabled:u.bloomEnabled,bloomThreshold:u.bloomThreshold,bloomWeight:u.bloomWeight,bloomScale:u.bloomScale,bloomKernel:u.bloomKernel,sharpenEnabled:u.sharpenEnabled,sharpenEdgeAmount:u.sharpen.edgeAmount,sharpenColorAmount:u.sharpen.colorAmount,grainEnabled:u.grainEnabled,grainIntensity:u.grain.intensity,grainAnimated:u.grain.animated,depthOfFieldEnabled:u.depthOfFieldEnabled,depthOfFieldBlurLevel:u.depthOfFieldBlurLevel,lensSize:u.depthOfField.lensSize,fStop:u.depthOfField.fStop,focusDistance:u.depthOfField.focusDistance,focalLength:u.depthOfField.focalLength,vignetteEnabled:u.imageProcessing?.vignetteEnabled,vignetteColor:u.imageProcessing?.vignetteColor.asArray(),vignetteWeight:u.imageProcessing?.vignetteWeight,chromaticAberrationEnabled:u.chromaticAberrationEnabled,aberrationAmount:u.chromaticAberration.aberrationAmount,radialIntensity:u.chromaticAberration.radialIntensity,direction:u.chromaticAberration.direction.asArray(),centerPosition:u.chromaticAberration.centerPosition.asArray(),glowLayerEnabled:u.glowLayerEnabled,glowLayerIntensity:u.glowLayer?.intensity,glowLayerBlurKernelSize:u.glowLayer?.blurKernelSize,colorGradingEnabled:u.imageProcessing.colorGradingEnabled,colorGradingTexture:u.imageProcessing.colorGradingTexture?.serialize(),colorGradingWithGreenDepth:u.imageProcessing.imageProcessingConfiguration.colorGradingWithGreenDepth,colorCurvesEnabled:u.imageProcessing.colorCurvesEnabled,globalHue:u.imageProcessing.colorCurves?.globalHue,globalDensity:u.imageProcessing.colorCurves?.globalDensity,globalExposure:u.imageProcessing.colorCurves?.globalExposure,globalSaturation:u.imageProcessing.colorCurves?.globalSaturation,highlightsHue:u.imageProcessing.colorCurves?.highlightsHue,highlightsDensity:u.imageProcessing.colorCurves?.highlightsDensity,highlightsExposure:u.imageProcessing.colorCurves?.highlightsExposure,highlightsSaturation:u.imageProcessing.colorCurves?.highlightsSaturation,midtonesHue:u.imageProcessing.colorCurves?.midtonesHue,midtonesDensity:u.imageProcessing.colorCurves?.midtonesDensity,midtonesExposure:u.imageProcessing.colorCurves?.midtonesExposure,midtonesSaturation:u.imageProcessing.colorCurves?.midtonesSaturation,shadowsHue:u.imageProcessing.colorCurves?.shadowsHue,shadowsDensity:u.imageProcessing.colorCurves?.shadowsDensity,shadowsExposure:u.imageProcessing.colorCurves?.shadowsExposure,shadowsSaturation:u.imageProcessing.colorCurves?.shadowsSaturation}:null}i(it,"serializeDefaultRenderingPipeline");function st(e,r,t,n){if(u)return u;let o=qt(e,r);if(o.samples=t.samples,o.fxaaEnabled=t.fxaaEnabled,o.imageProcessingEnabled=t.imageProcessingEnabled,o.imageProcessing){if(o.imageProcessing.exposure=t.exposure,o.imageProcessing.contrast=t.contrast,o.imageProcessing.fromLinearSpace=t.fromLinearSpace,o.imageProcessing.toneMappingEnabled=t.toneMappingEnabled,o.imageProcessing.toneMappingType=t.toneMappingType,o.imageProcessing.ditheringEnabled=t.ditheringEnabled,o.imageProcessing.ditheringIntensity=t.ditheringIntensity,o.imageProcessing.vignetteEnabled=t.vignetteEnabled??!1,o.imageProcessing.vignetteColor=Qt.Color4.FromArray(t.vignetteColor??[0,0,0]),o.imageProcessing.vignetteWeight=t.vignetteWeight??.3,o.imageProcessing.colorGradingEnabled=t.colorGradingEnabled??!1,o.imageProcessing.imageProcessingConfiguration.colorGradingWithGreenDepth=t.colorGradingWithGreenDepth??!0,t.colorGradingTexture){let s=null;if(t.colorGradingTexture.customType==="BABYLON.ColorGradingTexture"){let l=n+t.colorGradingTexture.name;s=new Yt.ColorGradingTexture(l,e),s.level=t.colorGradingTexture.level}else{let l=Wt.Texture.Parse(t.colorGradingTexture,e,n);ae(l)&&(s=l)}o.imageProcessing.colorGradingTexture=s}o.imageProcessing.colorCurvesEnabled=t.colorCurvesEnabled??!1,o.imageProcessing.colorCurves&&(o.imageProcessing.colorCurves.globalHue=t.globalHue??30,o.imageProcessing.colorCurves.globalDensity=t.globalDensity??0,o.imageProcessing.colorCurves.globalExposure=t.globalExposure??0,o.imageProcessing.colorCurves.globalSaturation=t.globalSaturation??0,o.imageProcessing.colorCurves.highlightsHue=t.highlightsHue??30,o.imageProcessing.colorCurves.highlightsDensity=t.highlightsDensity??0,o.imageProcessing.colorCurves.highlightsExposure=t.highlightsExposure??0,o.imageProcessing.colorCurves.highlightsSaturation=t.highlightsSaturation??0,o.imageProcessing.colorCurves.midtonesHue=t.midtonesHue??30,o.imageProcessing.colorCurves.midtonesDensity=t.midtonesDensity??0,o.imageProcessing.colorCurves.midtonesExposure=t.midtonesExposure??0,o.imageProcessing.colorCurves.midtonesSaturation=t.midtonesSaturation??0,o.imageProcessing.colorCurves.shadowsHue=t.shadowsHue??30,o.imageProcessing.colorCurves.shadowsDensity=t.shadowsDensity??0,o.imageProcessing.colorCurves.shadowsExposure=t.shadowsExposure??0,o.imageProcessing.colorCurves.shadowsSaturation=t.shadowsSaturation??0)}return o.bloomEnabled=t.bloomEnabled,o.bloomThreshold=t.bloomThreshold,o.bloomWeight=t.bloomWeight,o.bloomScale=t.bloomScale,o.bloomKernel=t.bloomKernel,o.sharpenEnabled=t.sharpenEnabled,o.sharpen.edgeAmount=t.sharpenEdgeAmount,o.sharpen.colorAmount=t.sharpenColorAmount,o.grainEnabled=t.grainEnabled,o.grain.intensity=t.grainIntensity,o.grain.animated=t.grainAnimated,o.depthOfFieldEnabled=t.depthOfFieldEnabled,o.depthOfFieldBlurLevel=t.depthOfFieldBlurLevel,o.depthOfField.lensSize=t.lensSize,o.depthOfField.fStop=t.fStop,o.depthOfField.focusDistance=t.focusDistance,o.depthOfField.focalLength=t.focalLength,o.chromaticAberrationEnabled=t.chromaticAberrationEnabled??!1,o.chromaticAberration.aberrationAmount=t.aberrationAmount??10,o.chromaticAberration.radialIntensity=t.radialIntensity??1,o.chromaticAberration.direction=nt.Vector2.FromArray(t.direction??[0,0]),o.chromaticAberration.centerPosition=nt.Vector2.FromArray(t.centerPosition??[0,0]),o.glowLayerEnabled=t.glowLayerEnabled??!1,o.glowLayer&&(o.glowLayer.intensity=t.glowLayerIntensity??1,o.glowLayer.blurKernelSize=t.glowLayerBlurKernelSize??32),o}i(st,"parseDefaultRenderingPipeline");function $n(e){Y.set(e,Je()),U.set(e,ze()),Q.set(e,Ue()),H.set(e,tt()),q.set(e,it()),W.set(e,Ye())}i($n,"saveRenderingConfigurationForCamera");function at(e,r,t){qe(),ke(e.getScene()),je(),et(),ot(),We();let n=Y.get(e);n&&!t?.ssao2Disabled&&Ze(e.getScene(),e,n);let o=U.get(e);o&&!t?.vlsDisabled&&$e(e.getScene(),o);let s=Q.get(e);s&&!t?.ssrDisabled&&Qe(e.getScene(),e,s);let l=H.get(e);l&&!t?.motionBlurDisabled&&rt(e.getScene(),e,l);let p=q.get(e);p&&!t?.defaultPipelineDisabled&&st(e.getScene(),e,p,r);let a=W.get(e);a&&!t?.taaDisabled&&He(e.getScene(),e,a)}i(at,"applyRenderingConfigurationForCamera");var ce=require("babylonjs"),Jt=require("babylonjs");function Zt(e){let r=e.metadata?.physicsAggregate;if(!r)return;let t;D(e)?t=e:se(e)&&(t=e.sourceMesh);let n=new Jt.PhysicsAggregate(e,r.shape.type,{mesh:t,mass:r.massProperties.mass});n.body.setMassProperties({mass:r.massProperties.mass,inertia:r.massProperties.inertia?ce.Vector3.FromArray(r.massProperties.inertia):void 0,centerOfMass:r.massProperties.centerOfMass?ce.Vector3.FromArray(r.massProperties.centerOfMass):void 0,inertiaOrientation:r.massProperties.inertiaOrientation?ce.Quaternion.FromArray(r.massProperties.inertiaOrientation):void 0}),n.shape.density=r.shape.density,n.body.setMotionType(r.body.motionType),n.shape.material=r.material,e.physicsAggregate=n,e.metadata.physicsAggregate=void 0}i(Zt,"configurePhysicsAggregate");function Xt(e,r){(Array.isArray(r)?r:[]).forEach(n=>{let o=e.getCameraById(n.cameraId);o&&(n.ssao2RenderingPipeline&&Y.set(o,n.ssao2RenderingPipeline),n.vlsPostProcess&&U.set(o,n.vlsPostProcess),n.ssrRenderingPipeline&&Q.set(o,n.ssrRenderingPipeline),n.motionBlurPostProcess&&H.set(o,n.motionBlurPostProcess),n.defaultRenderingPipeline&&q.set(o,n.defaultRenderingPipeline),n.taaRenderingPipeline&&W.set(o,n.taaRenderingPipeline))})}i(Xt,"applyRenderingConfigurations");var er=require("babylonjs");function J(e,r,t){return new Promise((n,o)=>{let s=new er.WebRequest;s.open("GET",e),s.responseType=r,s.send(),s.addEventListener("progress",l=>{t?.({total:l.total,loaded:l.loaded})}),s.addEventListener("load",()=>{n(r==="text"?s.responseText:s.response)}),s.addEventListener("error",l=>o(l))})}i(J,"loadFile");async function w(e,r){let t=await J(e,"text",r);return JSON.parse(t)}i(w,"loadJsonFile");function lt(e,r){let t=r.getNodeByName(e);if(t)return t;let n=r.lights.filter(o=>Ae(o));for(let o of n){let s=o.lights.find(l=>l.name===e);if(s)return s}return null}i(lt,"getNodeByName");function Z(e,r){let t=r.getNodeById(e);if(t)return t;let n=r.lights.filter(o=>Ae(o));for(let o of n){let s=o.lights.find(l=>l.id===e);if(s)return s}return null}i(Z,"getNodeById");var z=require("babylonjs"),tr=require("babylonjs");function ct(e){let r=tr.Vector3.FromArray(e);return r.equals(z.Axis.X)?z.Axis.X:r.equals(z.Axis.Y)?z.Axis.Y:r.equals(z.Axis.Z)?z.Axis.Z:r}i(ct,"parseAxis");function rr(e){return e.runtimeConfiguration.forEach(r=>{r.rotationAxis&&(r.rotationAxis=ct(r.rotationAxis)),r.boneOffsetAxis&&(r.boneOffsetAxis=ct(r.boneOffsetAxis))}),e}i(rr,"parseRagdollConfiguration");function pt(e){let r={rootNodeId:e.rootNodeId,skeletonName:e.skeletonName,scalingFactor:e.scalingFactor,runtimeConfiguration:e.runtimeConfiguration.map(t=>({name:t.name,bones:t.bones,width:t.width,depth:t.depth,height:t.height,size:t.size,joint:t.joint,min:t.min,max:t.max,boxOffset:t.boxOffset,rotationAxis:t.rotationAxis?.slice(),boneOffsetAxis:t.boneOffsetAxis?.slice()}))};return rr(r)}i(pt,"copyAndParseRagdollConfiguration");function jn(e){return new Promise(r=>{setTimeout(()=>r(),e)})}i(jn,"waitMs");async function mt(e){for(;!e();)await jn(150)}i(mt,"waitUntil");function ut(e){return e&&JSON.parse(JSON.stringify(e))}i(ut,"cloneJSObject");var lr=require("babylonjs"),ve=require("babylonjs"),cr=require("babylonjs"),pr=require("babylonjs"),$=require("babylonjs"),nr=!1,or=null,X=[],dt=new Map;function Un(e,r){let t=(0,$._GetAudioEngine)(null);return new pr._WebAudioStaticSound(e,t,r)}i(Un,"createSoundInstance");function ir(e){or?.remove(),X.length&&(or=e.onBeforeRenderObservable.add(()=>{X.forEach(r=>{r.isEnabled(!1)&&r.autoUpdateSpatial&&r.sound?._isSpatial&&r.isPlaying()&&e.activeCamera&&r.sound.spatial.update()})}))}i(ir,"registerUpdateSoundsObserver");function sr(e){e.sound?.onDisposeObservable.addOnce(()=>{let r=X.indexOf(e);r!==-1&&X.splice(r,1)}),e.onDisposeObservable.addOnce(()=>{e.sound?.dispose()})}i(sr,"registerSoundNodeEvents");function Qn(e,r){return new Promise(async(t,n)=>{if(!e.offlineProvider||!lr.Database.IDBStorageEnabled)return(0,$.CreateSoundBufferAsync)(r).then(o=>t(o)).catch(o=>n(o));e.offlineProvider.loadFile(r,o=>{(0,$.CreateSoundBufferAsync)(o).then(s=>t(s)).catch(s=>n(s))},void 0,()=>{n(null)},!0)})}i(Qn,"loadSoundBuffer");function mr(e,r){if(!e.soundRelativePath||!e.sound)return;let t=Un(e.soundRelativePath,{spatialAutoUpdate:!1});t._initAsync(e.sound.buffer,{spatialAutoUpdate:!1}).then(()=>{t.volume=e.volume,t._isSpatial=e.sound._isSpatial,t._isSpatial&&(t.spatial.attach(r),t.spatial.maxDistance=e.sound.spatial.maxDistance,t.spatial.panningModel=e.sound.spatial.panningModel,t.spatial.distanceModel=e.sound.spatial.distanceModel),r.sound=t,r.isSoundNode=!0,r.soundRelativePath=e.soundRelativePath,r.autoUpdateSpatial=e.autoUpdateSpatial,X.push(r),ir(r.getScene())}),sr(r),ar(r,t)}i(mr,"configureSourceNodeFrom");function ar(e,r){Object.defineProperty(e,"volume",{get:i(()=>r.volume,"get"),set:i(t=>{r.volume=t},"set")}),Object.defineProperty(e,"playbackRate",{get:i(()=>r.playbackRate,"get"),set:i(t=>{r.playbackRate=t},"set")}),e.isPaused=()=>r.state===ve.SoundState.Paused,e.isPlaying=()=>r.state===ve.SoundState.Started,e.isStopped=()=>r.state===ve.SoundState.Stopped,e.pause=()=>r.pause(),e.resume=()=>r.resume(),e.stop=t=>r.stop(t),e.play=t=>r.play(t),e.setVolume=(t,n)=>r.setVolume(t,n),e.attachTo=(t,n,o)=>r.spatial.attach(t,n,o)}i(ar,"configureSoundNodePrototype");function ur(){nr||(nr=!0,(0,cr.AddParser)("SoundNode",(e,r,t,n)=>{e.transformNodes?.forEach(o=>{if(!o.isSoundNode)return;let s=t.transformNodes?.find(l=>l.id===o.id);if(s&&o.soundRelativePath){let l=`${n}${o.soundRelativePath}`;r.addPendingData(l),dt.has(l)||dt.set(l,Qn(r,l)),dt.get(l).then(a=>{(0,$.CreateSoundAsync)(o.soundRelativePath,a,{spatialAutoUpdate:!1}).then(c=>{if(r.removePendingData(l),s.isDisposed())return c.dispose();c.volume=o.volume,c._isSpatial=o.isSpatial,o.isSpatial&&(c.spatial.attach(s),c.spatial.maxDistance=o.maxDistance,c.spatial.panningModel=o.panningModel,c.spatial.distanceModel=o.distanceModel),s.sound=c,s.isSoundNode=!0,s.soundRelativePath=o.soundRelativePath,s.autoUpdateSpatial=o.autoUpdateSpatial,X.push(s),sr(s),ar(s,c),ir(r)})})}})}))}i(ur,"registerAudioParser");function ee(e){let r=new Set;e.transformNodes.forEach(t=>{if(t.metadata?.isStaticGroup){let n=t.getDescendants(!1);n.push(t),n.forEach(o=>{if((K(o)||V(o)&&!o.isWorldMatrixFrozen)&&o.freezeWorldMatrix(),K(o)){let s=o.material;s&&!s.isFrozen&&!r.has(s)&&(r.add(s),s.onBindObservable.addOnce(()=>{s.freeze()}))}})}})}i(ee,"configureTransformNodes");var pe=class{constructor(r,t){this.entries=r;this.namingId=t}static{i(this,"AdvancedAssetContainerInstantiatedEntries")}get rootNodes(){return this.entries.rootNodes}get skeletons(){return this.entries.skeletons}get animationGroups(){return this.entries.animationGroups}dispose(){this.entries.dispose()}getRootNodeByName(r){let t=`${r}-${this.namingId}`;return this.entries.rootNodes.find(n=>n.name===t)??null}getNodeByName(r){let t=`${r}-${this.namingId}`;for(let n of this.entries.rootNodes){let o=this._recursivelyGetNodeByName(t,n);if(o)return o}return null}_recursivelyGetNodeByName(r,t){if(t.name===r)return t;for(let n of t.getDescendants(!0)){let o=this._recursivelyGetNodeByName(r,n);if(o)return o}return null}getScriptByClassByObjectName(r,t){let n=this.getNodeByName(r);if(n){let o=te(n,t);if(o?.length===1)return o[0]}return null}};var ft=require("babylonjs"),me=class{static{i(this,"AdvancedAssetContainer")}container;_rootUrl;_scriptsMap;_originalDescendants=[];_nodesMap=new Map;_animationGroupsMap=new Map;constructor(r,t,n){this.container=r,this._rootUrl=t,this._scriptsMap=n,r.populateRootNodes(),r.rootNodes.forEach(o=>{this._originalDescendants.push(o,...o.getDescendants(!1))}),r.animationGroups.forEach(o=>{this._animationGroupsMap.set(o.name,o)}),this._originalDescendants.forEach(o=>{this._nodesMap.set(o,{node:o,metadata:ut(o.metadata)})})}removeDefault(){this.container.getNodes().forEach(r=>{R.get(r)?.forEach(n=>{Ce(r,n)})}),this.container.removeAllFromScene()}getRootNodeByName(r){return this.container.rootNodes.find(t=>t.name===r)??null}getScriptByClassByObjectName(r,t){let n=this.container.getNodes();for(let o of n)if(o.name===r){let s=te(o,t);if(s?.length===1)return s[0]}return null}instantiate(r){let t=ft.Tools.RandomId(),n=i(a=>a,"nameFunction"),o=this.container.instantiateModelsToScene(n,!1,{...r,predicate:i(a=>(a.name=`${a.name}@editor-tools@${t}_${a.id}`,r?.predicate?.(a)??!0),"predicate")}),s=new pe(o,t);[...this.container.transformNodes,...this.container.meshes,...this.container.lights,...this.container.cameras,...this.container.animationGroups,...this.container.skeletons].forEach(a=>{let c=a.name.split("@editor-tools@");a.name=c[0]}),o.animationGroups.forEach(a=>{let c=a.name.split("@editor-tools@");a.name=`${c[0]}-${t}`});let p=[];return o.rootNodes.forEach(a=>{p.push(a,...a.getDescendants(!1))}),p.forEach(a=>{let c=a.name.split("@editor-tools@"),m=c[1].split("_").pop();a.name=`${c[0]}-${t}`;let f=this._originalDescendants.find(d=>d.id===m);k(f)&&V(a)&&mr(f,a),a.id=ft.Tools.RandomId(),a.metadata=ut(this._nodesMap.get(f).metadata),a.metadata??={},a.metadata.originalId=m,p.forEach(d=>{d.metadata.scripts?.forEach(g=>{Object.keys(g.values||{}).forEach(y=>{let b=g.values[y];if(b.type==="entity"){b.value===m&&(b.value=a.id),b.value===f.name&&(b.value=a.name);let A=this._animationGroupsMap.get(b.value);A&&(b.value=`${A.name}-${t}`)}})})})}),p.forEach(a=>{N(this.container.scene,a,this._scriptsMap,this._rootUrl)}),ee(this.container.scene),s}};var dr=require("babylonjs"),fr=require("babylonjs");async function gr(e,r,t){let n=t.environmentIntensity,s=e.split("/").pop().replace(".scene",".babylon"),l=await(0,fr.LoadAssetContainerAsync)(s,t,{rootUrl:r,pluginExtension:".babylon"});return dr.SceneLoaderFlags.ForceFullSceneLoadingForIncremental&&t.meshes.forEach(p=>D(p)&&p._checkDelayState()),l.addAllToScene(),t.iblIntensity=n,ee(t),l}i(gr,"preloadSceneScriptAsset");async function yr(e,r){return w(`${r}${e}`)}i(yr,"preloadCommonScriptAsset");var T=new Map,ue=new Map;function Wn(e,r){ue.has(e)&&console.warn(`A parser for the extension '${e}' was already registered. It will be overwritten.`),ue.set(e,r)}i(Wn,"registerScriptAssetParser");async function gt(e,r,t){[r,...r.transformNodes,...r.meshes,...r.lights,...r.cameras].filter(p=>p.metadata?.scripts?.length).map(p=>p.metadata.scripts).flat().forEach(p=>{if(t[p.key]?.default?._SceneAssets?.forEach(c=>{T.get(c.sceneName)||T.set(c.sceneName,null)}),p.values)for(let c in p.values){if(!p.values.hasOwnProperty(c))continue;let m=p.values[c];m.type==="asset"&&m.value&&!T.get(m.value)&&T.set(m.value,null)}});let s=0;for(let p of T.values())p===null&&++s;if(s===0)return s;let l=[];return T.forEach((p,a)=>{T.get(a)||l.push(new Promise(async c=>{try{let m=a.split(".").pop();switch(m){case"scene":let f=await gr(a,e,r);r.onDisposeObservable.addOnce(()=>{f.dispose(),T.delete(a)}),T.set(a,new me(f,e,t));break;default:if(ue.has(m)){let d=ue.get(m);T.set(a,await d({key:a,rootUrl:e,scene:r}));break}else T.set(a,await yr(a,e));break}}catch(m){console.error(m)}c()}))}),await Promise.all(l),s}i(gt,"_preloadScriptsAssets");var Sr=require("babylonjs"),Ie=require("babylonjs"),hr=require("babylonjs"),Ee=require("babylonjs"),br=require("babylonjs"),Pr=require("babylonjs-gui");function yt(e,r,t,n,o){let s=n.constructor;if(!s)return;s._NodesFromScene?.forEach(a=>{n[a.propertyKey.toString()]=lt(a.nodeName,e)}),s._ComponentsFromScene?.length&&e.getEngine().onBeginFrameObservable.addOnce(()=>{s._ComponentsFromScene?.forEach(a=>{let c=[];if([e,...e.transformNodes,...e.meshes,...e.lights,...e.cameras].forEach(f=>{let d=St(f,a.componentConstructor);d&&c.push(d)}),c.length>1)throw new Error(`Multiple components of type ${s._ComponentsFromScene[0].componentConstructor.name} found in scene for property "${s._ComponentsFromScene[0].propertyKey.toString()}".`);n[a.propertyKey.toString()]=c[0]??null})}),s._NodesFromDescendants?.forEach(a=>{let c=r.getDescendants?.(a.directDescendantsOnly,m=>m.name===a.nodeName)[0];n[a.propertyKey.toString()]=c??null}),s._AnimationGroups?.forEach(a=>{n[a.propertyKey.toString()]=e.getAnimationGroupByName(a.animationGroupName)}),s._SoundsFromScene?.forEach(a=>{let c=lt(a.soundName,e);c&&k(c)&&(n[a.propertyKey.toString()]=c??null)}),(s._GuiFromAsset??[]).map(async a=>{let c=`${o}assets/${a.pathInAssets}`;try{let m=await w(c),f=Pr.AdvancedDynamicTexture.CreateFullscreenUI(m.name,!0,e);f.parseSerializedObject(m.content,!1),n[a.propertyKey.toString()]=f,a.onGuiCreated?.(n,f)}catch(m){throw console.error(`Failed to load GUI from asset: ${c}`),m}}),s._ParticleSystemsFromScene?.forEach(a=>{let c=e.particleSystems?.find(m=>m.name!==a.particleSystemName?!1:a.directDescendantsOnly?m.emitter===r:m);n[a.propertyKey.toString()]=c}),(s._VisibleInInspector??[]).forEach(a=>{let c=a.propertyKey.toString(),m=t.values;if(!m)throw new Error(`No values found for script with key "${t.key}".`);if(m.hasOwnProperty(c)&&m[c].hasOwnProperty("value")){let f=m[c].value;switch(a.configuration.type){case"number":case"boolean":case"keymap":case"string":n[c]=f;break;case"vector2":n[c]=Ee.Vector2.FromArray(f);break;case"vector3":n[c]=Ee.Vector3.FromArray(f);break;case"color3":n[c]=Ie.Color3.FromArray(f);break;case"color4":n[c]=Ie.Color4.FromArray(f);break;case"entity":switch(a.configuration.entityType){case"node":case"sound":n[c]=Z(f,e)??null;break;case"animationGroup":n[c]=e.getAnimationGroupByName(f)??null;break;case"particleSystem":n[c]=e.particleSystems?.find(g=>g.id===f)??null;break}break;case"texture":f&&(n[c]=hr.Texture.Parse(f,e,o));break;case"asset":if(f){let g=a.configuration.assetType,S=T.get(f);switch(g){case"json":case"gui":case"scene":case"navmesh":case"cinematic":n[c]=S;break;case"ragdoll":n[c]=pt(S);break;case"nodeParticleSystemSet":let y=br.NodeParticleSystemSet.Parse(S);n[c]=y;break;case"material":n[c]=Sr.Material.Parse(S,e,o);break}}}}});let l=null,p=null;if(s._PointerEvents?.length){if(s._PointerEvents.find(m=>m.options.mode==="attachedMeshOnly")&&!K(r))throw new Error('@onPointerEvent with mode "attachedMeshOnly" can only be used on scripts attached to meshes (extends AbstractMesh).');if(s._PointerEvents.find(m=>m.options.mode!=="global")&&!j(r))throw new Error('@onPointerEvent with mode different from "global" can be used only on scripts attached to Node: Mesh, Light, Camera, TransformNode.');l=e.onPointerObservable.add(m=>{let f=null;s._PointerEvents.forEach(d=>{if(!d.eventTypes.includes(m.type))return;let g=d.propertyKey.toString();if(d.options.mode==="global")return n[g]?.(m);f=m.pickInfo,f||(f=e.pick(e.pointerX,e.pointerY,y=>y.isVisible&&y.isPickable&&y.isEnabled(!0)&&!y._masterMesh,!1));let S=f.pickedMesh;if(S&&(d.options.mode==="attachedMeshOnly"&&S===r||d.options.mode==="includeDescendants"&&j(r)&&[r,...r.getDescendants(!1)].find(A=>A===S)))return n[g]?.(m)})})}if(s._KeyboardEvents?.length&&(p=e.onKeyboardObservable.add(a=>{s._KeyboardEvents.forEach(c=>{c.eventTypes.includes(a.type)&&n[c.propertyKey.toString()]?.(a)})})),s._SpritesFromSpriteManager?.length){let a=r;if(!V(a)||!a.isSpriteManager)return console.error("@spriteFromSpriteManager decorator can only be used on SpriteManagerNode.");if(!a.spriteManager)return console.error(`SpriteManagerNode "${a.name}" has no sprite manager assigned.`);s._SpritesFromSpriteManager?.forEach(c=>{let m=a.spriteManager?.sprites.find(f=>f.name===c.spriteName)||null;n[c.propertyKey.toString()]=m})}if(s._AnimationsFromSprite?.length){if(!Le(r))return console.error("@animationFromSprite decorator can only be used in scripts attached on Sprite.");let a=r.metadata?.spriteAnimations;if(!a?.length)return console.error(`Sprite "${r.name}" has no sprite animations assigned.`);s._AnimationsFromSprite.forEach(c=>{let m=a.find(f=>f.name===c.animationName);m?n[c.propertyKey.toString()]=m??null:console.warn(`Sprite animation named "${c.animationName}" not found on sprite "${r.name}".`)})}return s._SceneAssets?.forEach(a=>{n[a.propertyKey.toString()]=T.get(a.sceneName)}),{observers:{pointerObserver:l,keyboardObserver:p}}}i(yt,"applyDecorators");function N(e,r,t,n){r.metadata?.scripts&&(r.metadata.scripts?.forEach(o=>{if(!o.enabled)return;let s=t[o.key];if(!s)return;let l=s,p={};if(s.default){l=new s.default(r);let a=yt(e,r,o,l,n);Object.assign(p,a?.observers??{})}l.onStart&&(p.onStartObserver=e.onBeforeRenderObservable.addOnce(()=>l.onStart(r))),l.onUpdate&&(p.onUpdateObserver=e.onBeforeRenderObservable.add(()=>l.onUpdate(r))),ht(r,l,o.key,p)}),r.metadata.scripts=void 0)}i(N,"_applyScriptsForObject");function Yn(e,r,t){if(t??=e.getScene?.(),!t)throw new Error("Cannot apply script on object: no scene available.");let n=new r(e),o={};return yt(t,e,{values:{}},n,""),n.onStart&&(o.onStartObserver=t.onBeforeRenderObservable.addOnce(()=>n.onStart())),n.onUpdate&&t.onBeforeRenderObservable.add(()=>n.onUpdate()),ht(e,n,"runtime",o),n}i(Yn,"applyScriptOnObject");var R=new Map;function ht(e,r,t,n){let o={key:t,observers:n,instance:r};R.has(e)?R.get(e).push(o):R.set(e,[o]),(j(e)||_e(e)||Re(e)||k(e))&&e.onDisposeObservable.addOnce((()=>{R.get(e)?.slice()?.forEach(l=>{Ce(e,l)}),R.delete(e)}))}i(ht,"_registerScriptInstance");function Ce(e,r){r.observers.onStartObserver?.remove(),r.observers.onUpdateObserver?.remove(),r.observers.pointerObserver?.remove(),r.observers.keyboardObserver?.remove();try{r.instance.onStop?.(e)}catch(o){console.error(`Failed to call onStop for script ${r.key} on object ${e}`,o)}let t=R.get(e),n=t?.indexOf(r)??-1;n!==-1&&t?.splice(n,1)}i(Ce,"_removeRegisteredScriptInstance");function te(e,r){return R.get(e)?.filter(o=>o.instance.constructor===r)?.map(o=>o.instance)??null}i(te,"getAllScriptsByClassForObject");function St(e,r){return te(e,r)?.[0]??null}i(St,"getScriptByClassForObject");function Hn(e){e.setCompressedTextureExclusions([".env",".hdr",".dds"]),e.setTextureFormatToUse(["-dxt.ktx","-astc.ktx","-pvrtc.ktx","-etc1.ktx","-etc2.ktx"])}i(Hn,"configureEngineToUseCompressedTextures");function Oe(e,r){e._excludedCompressedTextures&&!e._excludedCompressedTextures?.includes(r)&&e._excludedCompressedTextures?.push(r)}i(Oe,"addExcludedCompressedTexture");function qn(e,r,t){r.loadingTexturesQuality!==e&&(r.loadingTexturesQuality=e,r.textures.forEach(n=>{if(!ae(n)||!n.url)return;let o=Te(n,r);!o||n.url.includes(o)||n.updateURL(t+o)}))}i(qn,"applyTexturesQuality");function Te(e,r){if(r.loadingTexturesQuality==="high"||!e.metadata?.baseSize)return e.name;let t=e.metadata.baseSize.width,n=e.metadata.baseSize.height,o=t===M(t)||n===M(n),s="";switch(r.loadingTexturesQuality){case"medium":let d=t*.66>>0,g=n*.66>>0;o&&(d=M(d),g=M(g)),s=`_${d}_${g}`;break;case"low":case"very-low":let S=t*.33>>0,y=n*.33>>0;o&&(S=M(S),y=M(y)),s=`_${S}_${y}`;break}let l=e.name;if(!l||!s)return e.name;let p=l.split("/"),a=p.pop();if(!a)return e.name;let c=a.split(".").pop(),f=`${a.replace(`.${c}`,"")}${s}.${c}`;return p.push(f),p.join("/")}i(Te,"getTextureUrl");var bt=require("babylonjs"),Ar=!1;function xr(){if(Ar)return;Ar=!0;let e=bt.SerializationHelper._TextureParser;bt.SerializationHelper._TextureParser=(r,t,n)=>{let o=Te(r,t);if(!o)return e(r,t,n);let s=r.name;r.name=o;let l=e(r,t,n);return l&&(l.name=s),l}}i(xr,"registerTextureParser");var Cr=require("babylonjs"),Ir=require("babylonjs"),De=require("babylonjs"),Er=require("babylonjs"),vr=!1;function Or(){if(vr)return;vr=!0,(0,Er.RegisterShadowGeneratorSceneComponent)(Ir.ShadowGenerator);let e=(0,De.GetParser)(Cr.SceneComponentConstants.NAME_SHADOWGENERATOR);(0,De.AddParser)("ShadowGeneratorEditorPlugin",(r,t,n,o)=>{let s=new Map;r.shadowGenerators?.forEach(l=>{if(s.set(l.id,l.mapSize),t.loadingShadowsQuality!=="high"){switch(t.loadingShadowsQuality){case"medium":l.mapSize=l.mapSize*.5;break;case"low":l.mapSize=l.mapSize*.25;break;case"very-low":l.mapSize=l.mapSize*.125;break}l.mapSize=Math.max(128,M(l.mapSize))}}),e?.(r,t,n,o),t.lights.forEach(l=>{let p=l.getShadowGenerator();if(p?.getShadowMap()){let c=p.id,m=s.get(c);m&&(p.originalMapSize=m)}})})}i(Or,"registerShadowGeneratorParser");var Dr=require("babylonjs"),Mr=require("babylonjs"),Tr=!1;function wr(){Tr||(Tr=!0,(0,Mr.AddParser)("MorphTargetManagerEditorPlugin",(e,r,t,n)=>{e.morphTargetManagers.forEach(o=>{let l=t.meshes.find(c=>c.id===o.meshId)?.morphTargetManager;if(!l||o.targets.find(c=>!c.delayLoadingFile))return;let a=[];o.targets.forEach(c=>{if(!c.delayLoadingFile)return a.push(Promise.resolve(null));let m=`${n}${c.delayLoadingFile}`;r.addPendingData(m);let f=new Dr.WebRequest;f.responseType="arraybuffer",f.open("GET",m),f.send(),a.push(new Promise(d=>{f.addEventListener("load",()=>{r.removePendingData(m),d(f.response)})}))}),Promise.all(a).then(c=>{for(let m=0,f=l.numTargets;m<f;++m){let d=l.getTarget(m),g=o.targets[m],S=c[m];if(g.positionsCount){let y=new Float32Array(S,g.positionsOffset,g.positionsCount);d._positions=y,d.setPositions(y)}if(g.normalsCount){let y=new Float32Array(S,g.normalsOffset,g.normalsCount);d._normals=y,d.setNormals(y)}if(g.tangentsCount){let y=new Float32Array(S,g.tangentsOffset,g.tangentsCount);d._tangents=y,d.setTangents(y)}if(g.uvsCount){let y=new Float32Array(S,g.uvsOffset,g.uvsCount);d._uvs=y,d.setUVs(y)}if(g.uv2sCount){let y=new Float32Array(S,g.uv2sOffset,g.uv2sCount);d._uv2s=y,d.setUV2s(y)}}for(let m=0,f=l.numTargets;m<f;++m)l.getTarget(m)._onDataLayoutChanged.notifyObservers()})})}))}i(wr,"registerMorphTargetManagerParser");var Nr=require("babylonjs");function Rr(e,r){r??=new Nr.ClusteredLightContainer("Clustered Light Container",[],e);let t=e.metadata?.clusteredLight;return t&&(t.lights.length>0&&(r.horizontalTiles=t.horizontalTiles,r.verticalTiles=t.verticalTiles,r.depthSlices=t.depthSlices,r.maxRange=t.maxRange),t.lights.forEach(n=>{let o=e.getLightById(n);o&&r?.addLight(o)})),r}i(Rr,"configureLights");function Pt(e){if(!Array.isArray(e.frames)){let r=[];for(let t of Object.keys(e.frames))r.push({filename:t,...e.frames[t]});e.frames=r}}i(Pt,"normalizeAtlasJson");function Jn(e,r,t){let o=(e.metadata?.spriteAnimations??[]).find(s=>s.name===r);if(!o)return console.error(`Animation with name "${r}" not found on sprite.`);e.playAnimation(o.from,o.to,o.loop,o.delay,t)}i(Jn,"playSpriteAnimationFromName");var _r=require("babylonjs"),Lr=require("babylonjs"),Vr=require("babylonjs"),Br=require("babylonjs"),At=require("babylonjs"),re=require("babylonjs"),Gr=require("babylonjs"),Fr=!1;function Kr(){Fr||(Fr=!0,(0,Gr.AddParser)("SpriteMapNode",(e,r,t,n)=>{e.transformNodes?.forEach(o=>{if(!o.isSpriteMap)return;let s=t.transformNodes?.find(a=>a.id===o.id);if(!s)return;s.isSpriteMap=o.isSpriteMap;let l=`${n}${o.atlasJsonRelativePath}`;r.addPendingData(l);let p=new Vr.WebRequest;p.open("GET",l),p.send(),p.addEventListener("load",()=>{r.removePendingData(l);let a=JSON.parse(p.responseText);Pt(a);let c=`${_r.Tools.GetFolderPath(l)}${a.meta.image}`,m=new At.Texture(c,r,!1,!1,At.Texture.NEAREST_NEAREST,null,null,null,!1,Lr.Engine.TEXTUREFORMAT_RGBA),f=new Br.SpriteMap(s.name,a,m,{layerCount:o.options.layerCount,stageSize:re.Vector2.FromArray(o.options.stageSize??[10,1]),outputSize:re.Vector2.FromArray(o.options.outputSize??[100,100]),colorMultiply:re.Vector3.FromArray(o.options.colorMultiply??[1,1,1]),flipU:!0},r);o.tiles.forEach(g=>{for(let S=0,y=g.repeatCount.x+1;S<y;++S)for(let b=0,A=g.repeatCount.y+1;b<A;++b){let v=S*(g.repeatOffset.x+1),x=b*(g.repeatOffset.y+1);f.changeTiles(g.layer,new re.Vector2(g.position.x+v,(f.options.stageSize?.y??0)-1-g.position.y-x),g.tile)}});let d=f._output;d.parent=s,s.spriteMap=f})})}))}i(Kr,"registerSpriteMapParser");var $r=require("babylonjs"),jr=require("babylonjs"),Ur=require("babylonjs"),xt=require("babylonjs"),Qr=require("babylonjs");function kr(e,r){r?.fogEnabled!==void 0&&(e.fogEnabled=r?.fogEnabled),r?.blendMode!==void 0&&(e.blendMode=r?.blendMode),r?.disableDepthWrite!==void 0&&(e.disableDepthWrite=r?.disableDepthWrite),r?.pixelPerfect!==void 0&&(e.pixelPerfect=r?.pixelPerfect),r?.useLogarithmicDepth!==void 0&&(e.useLogarithmicDepth=r?.useLogarithmicDepth),r?.metadata!==void 0&&(e.metadata=r?.metadata);for(let t of r?.sprites??[]){let n=jr.Sprite.Parse(t,e);n.uniqueId=t.uniqueId,n.metadata=t.metadata}}i(kr,"parseSerializedSpriteManager");var zr=!1;function Wr(){zr||(zr=!0,(0,Qr.AddParser)("SpriteManagerNode",(e,r,t,n)=>{e.transformNodes?.forEach(o=>{if(!o.isSpriteManager)return;let s=t.transformNodes?.find(p=>p.id===o.id);if(!s)return;let l=r.getEngine();if(s.isSpriteManager=o.isSpriteManager,o.atlasJsonRelativePath){let p=`${n}${o.atlasJsonRelativePath}`;r.addPendingData(p);let a=new Ur.WebRequest;a.open("GET",p),a.send(),a.addEventListener("load",()=>{r.removePendingData(p);let c=JSON.parse(a.responseText),m=`${$r.Tools.GetFolderPath(p)}${c.meta.image}`;Oe(l,m);let f=new xt.SpriteManager(s.name,m,1e3,64,r,void 0,void 0,!0,c);s.spriteManager=f,o.spriteManager&&kr(f,o.spriteManager)})}else if(o.spriteManager?.textureUrl){Oe(l,o.spriteManager.textureUrl);let p=`${n}${o.spriteManager.textureUrl}`,a=new xt.SpriteManager(s.name,p,1e3,{width:o.spriteManager.cellWidth,height:o.spriteManager.cellHeight},r,void 0,void 0,!1);s.spriteManager=a,o.spriteManager&&kr(a,o.spriteManager)}})}))}i(Wr,"registerSpriteManagerParser");var Hr=require("babylonjs"),qr=require("babylonjs"),Yr=!1;function Jr(){Yr||(Yr=!0,(0,Hr.AddParser)("NodeParticleSystemSetEditorPlugin",(e,r,t,n)=>{e.meshes?.forEach(o=>{if(!o.isNodeParticleSystemMesh)return;let s=t.meshes?.find(l=>l.id===o.id);s&&(o.nodeParticleSystemSet.blocks?.forEach(l=>{l.url&&(l.url=`${n}${l.url}`)}),s.nodeParticleSystemSet=qr.NodeParticleSystemSet.Parse(o.nodeParticleSystemSet),s.nodeParticleSystemSet.id=o.nodeParticleSystemSet.id,s.nodeParticleSystemSet.uniqueId=o.uniqueId,r.addPendingData(o.id),s.nodeParticleSystemSet.buildAsync(r,!1).then(l=>{r.removePendingData(o.id),s.particleSystemSet=l,l.systems.forEach(p=>{if(Fe(p)){let a=p._sizeCreation.process;a&&(p._sizeCreation.process=(c,m)=>{a(c,m),c.scale.x*=100,c.scale.y*=100})}}),l.emitterNode=s,l.start()}))})}))}i(Jr,"registerNodeParticleSystemSetParser");var en=require("babylonjs"),vt=require("babylonjs"),tn=require("babylonjs"),rn=require("babylonjs"),Zr=new Map;async function Xr(e,r){let t=e.getWaitingItemsCount();for(;!e.isDisposed&&(!e.isReady()||e.getWaitingItemsCount()>0);){await new Promise(o=>setTimeout(o,150));let n=t-e.getWaitingItemsCount();n===t&&e.textures.forEach(o=>{o.delayLoadState===vt.Constants.DELAYLOADSTATE_NONE&&(o.delayLoadState=vt.Constants.DELAYLOADSTATE_LOADED)}),r(n/t)}}i(Xr,"waitForWaitingItems");async function Zn(e,r,t,n,o){t.loadingQuality=o?.quality??"high",t.loadingTexturesQuality=o?.texturesQuality??t.loadingQuality,t.loadingShadowsQuality=o?.shadowsQuality??t.loadingQuality,t.loadingLodsQuality=o?.lodsQuality??t.loadingQuality,ur(),xr(),Or(),wr(),Kr(),Wr(),Jr();let s=Zr.get(t)??{};if(Zr.set(t,s),await(0,tn.AppendSceneAsync)(`${e}${r}`,t,{pluginExtension:".babylon",onProgress:i(p=>{let a=Math.min(p.loaded/p.total*.5);o?.onProgress?.(a)},"onProgress")}),await Xr(t,p=>{o?.onProgress?.(.5+p*.25)}),!o?.skipAssetsPreload){let p=0;do p=await gt(e,t,n);while(p!==0&&!t.isDisposed)}rn.SceneLoaderFlags.ForceFullSceneLoadingForIncremental&&t.meshes.forEach(p=>D(p)&&p._checkDelayState());let l=Rr(t,s.clusteredLightContainer);s.clusteredLightContainer=l,await Xr(t,p=>{o?.onProgress?.(.75+p*.25)}),o?.onProgress?.(1),Be(t),Ge(t.loadingLodsQuality,t),Ke(t),xe(t),t.metadata?.rendering&&(Xt(t,t.metadata.rendering),t.activeCamera&&at(t.activeCamera,e,o?.postProcessConfiguration)),t.metadata?.physicsGravity&&t.getPhysicsEngine()?.setGravity(en.Vector3.FromArray(t.metadata?.physicsGravity)),N(t,t,n,e),t.transformNodes.forEach(p=>{N(t,p,n,e)}),t.meshes.forEach(p=>{Zt(p),N(t,p,n,e)}),t.lights.forEach(p=>{N(t,p,n,e)}),t.cameras.forEach(p=>{N(t,p,n,e)}),t.spriteManagers?.forEach(p=>{p.sprites.forEach(a=>{N(t,a,n,e)})}),ee(t)}i(Zn,"loadScene");var nn=require("babylonjs");async function Xn(e,r,t){let n=await w(e+r),s=nn.Tools.Instantiate(n.customType).Parse(n,t,e);return s.id=n.id,s.uniqueId=n.uniqueId,s}i(Xn,"loadMaterialFromFile");function eo(e){return Promise.all(e.materials.map(async r=>{let t=r.getBindedMeshes();await Promise.all(t.map(async n=>{se(n)||await r.forceCompilationAsync(n,{clipPlane:!!e.clipPlane,useInstances:n.hasInstances})}))}))}i(eo,"forceCompileAllSceneMaterials");var B=require("babylonjs");function de(e){if(!isNaN(parseFloat(e))&&isFinite(e))return B.Animation.ANIMATIONTYPE_FLOAT;switch(e?.getClassName?.()){case"Vector2":return B.Animation.ANIMATIONTYPE_VECTOR2;case"Vector3":return B.Animation.ANIMATIONTYPE_VECTOR3;case"Quaternion":return B.Animation.ANIMATIONTYPE_QUATERNION;case"Color3":return B.Animation.ANIMATIONTYPE_COLOR3;case"Color4":return B.Animation.ANIMATIONTYPE_COLOR4;case"Size":return B.Animation.ANIMATIONTYPE_SIZE;case"Matrix":return B.Animation.ANIMATIONTYPE_MATRIX}return null}i(de,"getAnimationTypeForObject");var on=require("babylonjs");function to(e){return function(r,t){let n=r.constructor;n._NodesFromScene??=[],n._NodesFromScene.push({propertyKey:t,nodeName:e})}}i(to,"nodeFromScene");function ro(e){return function(r,t){let n=r.constructor;n._ComponentsFromScene??=[],n._ComponentsFromScene.push({propertyKey:t,componentConstructor:e})}}i(ro,"componentFromScene");function no(e,r=!1){return function(t,n){let o=t.constructor;o._NodesFromDescendants??=[],o._NodesFromDescendants.push({propertyKey:n,nodeName:e,directDescendantsOnly:r})}}i(no,"nodeFromDescendants");function oo(e){return function(r,t){let n=r.constructor;n._AnimationGroups??=[],n._AnimationGroups.push({animationGroupName:e,propertyKey:t})}}i(oo,"animationGroupFromScene");function io(e){return function(r,t){let n=r.constructor;n._SceneAssets??=[],n._SceneAssets.push({sceneName:e,propertyKey:t})}}i(io,"sceneAsset");function so(e,r){return function(t,n){let o=t.constructor;o._GuiFromAsset??=[],o._GuiFromAsset.push({propertyKey:n,pathInAssets:e,onGuiCreated:r})}}i(so,"guiFromAsset");function ao(e){return function(r,t){let n=r.constructor;n._SoundsFromScene??=[],n._SoundsFromScene.push({propertyKey:t,soundName:e})}}i(ao,"soundFromScene");function lo(e,r=!1){return function(t,n){let o=t.constructor;o._ParticleSystemsFromScene??=[],o._ParticleSystemsFromScene.push({propertyKey:n,particleSystemName:e,directDescendantsOnly:r})}}i(lo,"particleSystemFromScene");function co(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"boolean"}})}}i(co,"visibleAsBoolean");function po(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"string"}})}}i(po,"visibleAsString");function mo(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"number"}})}}i(mo,"visibleAsNumber");function uo(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"vector2"}})}}i(uo,"visibleAsVector2");function fo(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"vector3"}})}}i(fo,"visibleAsVector3");function go(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"color3"}})}}i(go,"visibleAsColor3");function yo(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"color4"}})}}i(yo,"visibleAsColor4");function So(e,r,t){return function(n,o){let s=n.constructor;s._VisibleInInspector??=[],s._VisibleInInspector.push({label:r,propertyKey:o,configuration:{...t,entityType:e,type:"entity"}})}}i(So,"visibleAsEntity");function ho(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"texture"}})}}i(ho,"visibleAsTexture");function bo(e,r){return function(t,n){let o=t.constructor;o._VisibleInInspector??=[],o._VisibleInInspector.push({label:e,propertyKey:n,configuration:{...r,type:"keymap"}})}}i(bo,"visibleAsKeyMap");function Po(e,r,t){return function(n,o){let s=n.constructor;s._VisibleInInspector??=[],s._VisibleInInspector.push({label:r,propertyKey:o,configuration:{...t,assetType:e,type:"asset"}})}}i(Po,"visibleAsAsset");function Ao(e,r){return function(t,n){let o=t.constructor;o._PointerEvents??=[],o._PointerEvents.push({propertyKey:n,options:{mode:"global",...r??{}},eventTypes:Array.isArray(e)?e:[e]})}}i(Ao,"onPointerEvent");function xo(e){return function(r,t){let n=r.constructor;n._KeyboardEvents??=[],n._KeyboardEvents.push({propertyKey:t,eventTypes:Array.isArray(e)?e:[e]})}}i(xo,"onKeyboardEvent");function vo(e){return function(r,t){let n=r.constructor;n._SpritesFromSpriteManager??=[],n._SpritesFromSpriteManager.push({propertyKey:t,spriteName:e})}}i(vo,"spriteFromSpriteManager");function Co(e){return function(r,t){let n=r.constructor;n._AnimationsFromSprite??=[],n._AnimationsFromSprite.push({propertyKey:t,animationName:e})}}i(Co,"animationFromSprite");var Me=require("babylonjs");function ju(e,r){let t;return e===Me.Animation.ANIMATIONTYPE_FLOAT?t=r.value:t=r.value.clone(),{value:t,frame:r.frame,interpolation:r.interpolation,inTangent:e===Me.Animation.ANIMATIONTYPE_FLOAT?r.inTangent:r.inTangent?.clone(),outTangent:e===Me.Animation.ANIMATIONTYPE_FLOAT?r.outTangent:r.outTangent?.clone()}}i(ju,"cloneKey");function we(e,r){let t=r.split("."),n=e;for(let o=0;o<t.length;++o)n=n[t[o]];return n}i(we,"getPropertyValue");function Ct(e,r,t){let n=null;e.onAnimationGroupPlayObservable.add(()=>{n=r.onAfterAnimationsObservable.add(()=>{t()})}),e.onAnimationGroupPauseObservable.add(()=>{n&&(r.onAfterAnimationsObservable.remove(n),n=null)}),e.onAnimationGroupEndObservable.add(()=>{n&&(r.onAfterAnimationsObservable.remove(n),n=null)})}i(Ct,"registerAfterAnimationCallback");var G=require("babylonjs"),Ne=require("babylonjs"),_=require("babylonjs");function Io(e,r){return{name:e.name,framesPerSecond:e.framesPerSecond,outputFramesPerSecond:e.outputFramesPerSecond,tracks:e.tracks.map(t=>{let n=null,o=null;if(t.node?(n=Z(t.node,r),n||(n=r.particleSystems?.find(l=>l.id===t.node)??null)):t.defaultRenderingPipeline&&(n=le()),t.propertyPath){let l=we(n,t.propertyPath);o=de(l)}let s=null;return t.sound&&(s=Z(t.sound,r)),{node:n,sound:s,propertyPath:t.propertyPath,defaultRenderingPipeline:t.defaultRenderingPipeline,animationGroup:t.animationGroup?r.getAnimationGroupByName(t.animationGroup):null,animationGroups:t.animationGroups,sounds:t.sounds,soundVolume:It(t.soundVolume??[],G.Animation.ANIMATIONTYPE_FLOAT),keyFrameEvents:t.keyFrameEvents?.map(l=>{let p={...l};switch(l.data?.type){case"set-enabled":p.data={type:"set-enabled",value:l.data.value,node:Z(l.data.node,r)};break;case"apply-impulse":p.data={type:"apply-impulse",radius:l.data.radius,mesh:r.getMeshById(l.data.mesh),force:_.Vector3.FromArray(l.data.force),contactPoint:_.Vector3.FromArray(l.data.contactPoint)};break}return p}),keyFrameAnimations:n&&o!==null&&It(t.keyFrameAnimations??[],o)}})}}i(Io,"parseCinematic");function F(e,r){if(e===null)return null;if(e!==void 0)switch(r){case G.Animation.ANIMATIONTYPE_FLOAT:return e;case G.Animation.ANIMATIONTYPE_VECTOR2:return _.Vector2.FromArray(e);case G.Animation.ANIMATIONTYPE_VECTOR3:return _.Vector3.FromArray(e);case G.Animation.ANIMATIONTYPE_QUATERNION:return _.Quaternion.FromArray(e);case G.Animation.ANIMATIONTYPE_COLOR3:return Ne.Color3.FromArray(e);case G.Animation.ANIMATIONTYPE_COLOR4:return Ne.Color4.FromArray(e);case G.Animation.ANIMATIONTYPE_MATRIX:return _.Matrix.FromArray(e)}}i(F,"parseCinematicKeyValue");function It(e,r){return e?.map(t=>{let n=t.type==="key"?t:null;if(n)return{...n,value:F(n.value,r),inTangent:F(n.inTangent,r),outTangent:F(n.outTangent,r)};let o=t.type==="cut"?t:null;if(o)return{...o,key1:{...o.key1,value:F(o.key1.value,r),inTangent:F(o.key1.inTangent,r),outTangent:F(o.key1.outTangent,r)},key2:{...o.key2,value:F(o.key2.value,r),inTangent:F(o.key2.inTangent,r),outTangent:F(o.key2.outTangent,r)}};throw new Error(`Unknown key frame type: ${t.type}`)})}i(It,"parseKeyFrameAnimations");function sn(e,r){e.onEventObservable.notifyObservers(r.eventName)}i(sn,"handleApplyEvent");function an(e){e.node?.setEnabled(e.value)}i(an,"handleSetEnabledEvent");var Et=require("babylonjs"),ln=Et.Vector3.Zero();function cn(e,r){let t=r.mesh?[r.mesh]:e.meshes.filter(n=>n.physicsAggregate);r.radius&&(t=t.filter(n=>{let o=n.getBoundingInfo().boundingBox.centerWorld;return Et.Vector3.Distance(o,r.contactPoint)<=r.radius})),t.forEach(n=>{if(n.physicsAggregate?.body){let o=r.contactPoint.subtract(n.getBoundingInfo().boundingBox.centerWorld);o.multiplyInPlace(r.force),n.physicsAggregate.body.setLinearVelocity(ln),n.physicsAggregate.body.setAngularVelocity(ln),n.physicsAggregate.body.applyImpulse(o.negateInPlace(),r.contactPoint)}})}i(cn,"handleApplyImpulseEvent");var pn=require("babylonjs"),mn=require("babylonjs"),fe=class extends mn.AnimationGroup{static{i(this,"Cinematic")}onEventObservable=new pn.Observable;onEvent(r,t){this.onEventObservable.add(n=>{r===n&&t()})}};function Ot(e){return e.type==="key"}i(Ot,"isCinematicKey");function ne(e){return e.type==="cut"}i(ne,"isCinematicKeyCut");function Eo(e){return e.type==="event"}i(Eo,"isCinematicKeyEvent");function Oo(e){return e.type==="group"}i(Oo,"isCinematicGroup");function To(e){return e.type==="sound"}i(To,"isCinematicSound");var C=require("babylonjs"),oe=require("babylonjs");function Do(e,r,t){let n=new fe(e.name,r);return e.tracks.forEach(o=>{let s=o.animationGroup;if(s&&o.animationGroups?.length){let d=s.clone(`${s.name}-cinematic-temp`),g=r.animationGroups.indexOf(d);g!==-1&&r.animationGroups.splice(g,1),n.onAnimationEndObservable.add(()=>{s.stop(),d.stop()});let S=o.animationGroups.reduce((v,x)=>Math.min(v,x.frame),Number.MAX_VALUE)??0,y=o.animationGroups.reduce((v,x)=>Math.max(v,x.frame+x.endFrame),0)??0,b={frame:S},A=new C.Animation(d.name,"frame",60,C.Animation.ANIMATIONTYPE_FLOAT,C.Animation.ANIMATIONLOOPMODE_CYCLE,!1);if(A.setKeys([{frame:S,value:0},{frame:y,value:y}]),o.animationGroups.forEach(v=>{A.addEvent(new oe.AnimationEvent(v.frame,()=>{let x=v.repeatCount??0;if(d.to=v.endFrame,d.speedRatio=v.speed,d.stop(),d.play(x>0),d.from!==v.startFrame&&d.goToFrame(v.startFrame),x){let ie=0;d.onAnimationGroupLoopObservable.add(()=>{++ie,ie>x&&d.stop()})}}))}),n.addTargetedAnimation(A,b),(o.animationGroupWeight?.length??0)>=2&&o.animationGroupWeight.find(x=>ne(x)?x.key1.value!==1||x.key2.value!==1:x.value!==1)){let x={weight:0},ie=new C.Animation(`${d.name}-weights`,"weight",60,C.Animation.ANIMATIONTYPE_FLOAT,C.Animation.ANIMATIONLOOPMODE_CYCLE,!1),Se=[];o.animationGroupWeight.forEach(he=>{ne(he)?(Se.push(he.key1),Se.push(he.key2)):Se.push(he)}),ie.setKeys(Se),n.addTargetedAnimation(ie,x),Ct(n,r,()=>{d.weight=x.weight})}}let l=o.sound;if(!t?.ignoreSounds&&l&&l.sound?.buffer&&o.sounds?.length){let d={dummy:0,volume:0},g=new C.Animation(l.name,"dummy",60,C.Animation.ANIMATIONTYPE_FLOAT,C.Animation.ANIMATIONLOOPMODE_CYCLE,!1),S=0;if(o.sounds?.forEach(y=>{let b=y.endFrame-y.startFrame;S=Math.max(S,y.frame+b),g.addEvent(new oe.AnimationEvent(y.frame,A=>{let x=(A-y.frame+y.startFrame)/e.framesPerSecond;l.play({startOffset:x})},!1)),g.addEvent(new oe.AnimationEvent(y.frame+b,()=>{l.stop()}))}),g.setKeys([{frame:0,value:0},{frame:S,value:S}]),n.addTargetedAnimation(g,d),(o.soundVolume?.length??0)>=2){let y=new C.Animation(l.name,"volume",60,C.Animation.ANIMATIONTYPE_FLOAT,C.Animation.ANIMATIONLOOPMODE_CYCLE,!1),b=[];o.soundVolume.forEach(A=>{ne(A)?(b.push(A.key1),b.push(A.key2)):b.push(A)}),y.setKeys(b),n.addTargetedAnimation(y,d),Ct(n,r,()=>{l.volume=d.volume})}}if(o.keyFrameEvents){let d={dummy:0},g=new C.Animation("events","dummy",60,C.Animation.ANIMATIONTYPE_FLOAT,C.Animation.ANIMATIONLOOPMODE_CYCLE,!1),S=0;o.keyFrameEvents?.forEach(y=>{S=Math.max(S,y.frame),g.addEvent(new oe.AnimationEvent(y.frame,()=>{switch(y.data?.type){case"event":sn(n,y.data);break;case"set-enabled":an(y.data);break;case"apply-impulse":cn(r,y.data);break}}))}),g.setKeys([{frame:0,value:0},{frame:S+1,value:S+1}]),n.addTargetedAnimation(g,d)}let p=o.defaultRenderingPipeline?le():o.node;if(!p||!o.propertyPath||!o.keyFrameAnimations)return;let a=we(p,o.propertyPath),c=de(a);if(c===null)return;let m=new C.Animation(o.propertyPath,o.propertyPath,60,c,C.Animation.ANIMATIONLOOPMODE_CYCLE,!1),f=[];o.keyFrameAnimations?.forEach(d=>{if(Ot(d))return f.push(d);ne(d)&&(f.push(d.key1),f.push(d.key2),Pe(p)&&o.propertyPath==="position"&&m.addEvent(new oe.AnimationEvent(d.key1.frame,()=>{let g=Xe();if(!g)return;let S=g.motionStrength;g.motionStrength=0,requestAnimationFrame(()=>{g.motionStrength=S})})))}),m.setKeys(f),n.addTargetedAnimation(m,p)}),n.normalize(),n}i(Do,"generateCinematicAnimationGroup");async function Tt(e,r){return new Promise((t,n)=>{let o=indexedDB.open(e,1);o.addEventListener("error",()=>n()),o.addEventListener("blocked",()=>n()),o.addEventListener("upgradeneeded",()=>{try{r(o.result)}catch(s){n(s)}}),o.addEventListener("success",()=>{t(o.result)})})}i(Tt,"openIndexDB");function ge(e,r,t){return new Promise(n=>{let s=e.transaction(r).objectStore(r).get(t);s.addEventListener("error",()=>{n(null)}),s.addEventListener("success",()=>{n(s.result??null)})})}i(ge,"getFromIndexDB");async function L(e,r,t){let o=e.transaction(r,"readwrite").objectStore(r).put(t);await new Promise((s,l)=>{o.addEventListener("error",()=>l()),o.addEventListener("success",()=>s())})}i(L,"putInIndexDB");var un=require("babylonjs");function Mo(e){un.AbstractEngine.OfflineProviderFactory=(r,t,n=!1)=>new ye(e,r,t,n)}i(Mo,"setupOfflineProvider");async function Dt(e,r){let t=await new Promise(n=>{let o=new ye(e,r,s=>n(s?o:null),!1)});return await t?.open(),t}i(Dt,"createAndOpenDatabase");var ye=class{static{i(this,"Database")}enableSceneOffline=!0;enableTexturesOffline=!0;name;_database=null;_manifestVersion=null;constructor(r,t,n,o){this.name=r,o?n(!1):this._checkManifest(t,n)}async _checkManifest(r,t){try{let n=await w(`${r}.manifest?${Date.now()}`);this._manifestVersion=n.version,t(!0)}catch{this.enableSceneOffline=!1,this.enableTexturesOffline=!1,t(!1)}}async open(r,t){try{this._database=await Tt(this.name,n=>{n.createObjectStore("files",{keyPath:"url"}),n.createObjectStore("images",{keyPath:"url"}),n.createObjectStore("versions",{keyPath:"url"})}),r?.()}catch{t?.()}}close(){this._database?.close(),this._database=null}async loadImage(r,t){if(!this._database){t.src=r;return}let n=null;if(await mt(()=>this._manifestVersion!==null),await this._getFileVersionForUrl(r)!==this._manifestVersion?(n=await J(r,"blob"),await Promise.all([L(this._database,"images",{url:r,data:n}),L(this._database,"versions",{url:r,version:this._manifestVersion})])):n=(await ge(this._database,"images",r))?.data??null,n!==null){let s=URL.createObjectURL(n);t.src=s}else t.src=r}async saveImage(r){if(!this._database)throw new Error("Database is not available");let t=await J(r,"blob");await Promise.all([L(this._database,"images",{url:r,data:t}),L(this._database,"versions",{url:r,version:this._manifestVersion})])}async isFileMatchingVersion(r){return await this._getFileVersionForUrl(r)===this._manifestVersion}async loadFile(r,t,n,o,s){if(!this._database)return o?.();let l=null;await mt(()=>this._manifestVersion!==null),await this._getFileVersionForUrl(r)!==this._manifestVersion?(l=await J(r,s?"arraybuffer":"text",n),await Promise.all([L(this._database,"files",{url:r,data:l}),L(this._database,"versions",{url:r,version:this._manifestVersion})])):l=(await ge(this._database,"files",r))?.data??null,l!==null?t(l):o?.()}async saveFile(r,t,n){if(!this._database)throw new Error("Database is not available");let o=await J(r,t?"arraybuffer":"text",n);await Promise.all([L(this._database,"files",{url:r,data:o}),L(this._database,"versions",{url:r,version:this._manifestVersion})])}async _getFileVersionForUrl(r){return(await ge(this._database,"versions",r))?.version??null}};var dn=["babylon","json"],fn=["jpg","jpeg","png","bmp","webp"],gn=["bin","babylonbinarymeshdata","mp3","wav","ktx","ktx2"],wo=[...dn,...fn,...gn];async function No(e,r,t){let n=[],o=await w(`${r}scenes-used-files.json`),s=0,l=t?.engine?.texturesSupported[0],p=Object.values(o).reduce((c,m)=>c+m.length,0);function a(c){++s,t?.onProgress?.(s/p),c?.()}i(a,"notifyProgress");for(let[c,m]of Object.entries(o)){let f=c.replace(".scene",".babylon"),d=await Dt(e,`${r}${f}`);if(d){for(let g=0,S=m.length;g<S;++g){let y=m[g],b=y.split(".").pop()?.toLowerCase();if(!b){a();continue}if(b==="ktx")if(l){if(!y.endsWith(l)){a();continue}}else{a();continue}if(n.length>300){try{await Promise.all(n)}catch{}n.splice(0,n.length)}let A=`${r}${y}`;wo.includes(b)&&n.push(new Promise(async v=>{if(await d.isFileMatchingVersion(A))return a(v);try{fn.includes(b)?t?.disableImages||await d.saveImage(A):gn.includes(b)?await d.saveFile(A,!0):dn.includes(b)&&await d.saveFile(A,!1)}catch{}a(v)}))}await Promise.all(n),d.close()}}await Promise.all(n)}i(No,"preloadAssetsToDatabase");0&&(module.exports={AdvancedAssetContainer,AdvancedAssetContainerInstantiatedEntries,Cinematic,Database,NodeParticleSystemSet,_applyScriptsForObject,_preloadScriptsAssets,_registerScriptInstance,_removeRegisteredScriptInstance,addExcludedCompressedTexture,animationFromSprite,animationGroupFromScene,applyMeshesLODQuality,applyRenderingConfigurationForCamera,applyScriptOnObject,applyShadowsQuality,applyTexturesQuality,componentFromScene,configureEngineToUseCompressedTextures,configureMeshDistanceOrScreenCoverage,configureShadowMapRefreshRate,configureShadowMapRenderListPredicate,copyAndParseRagdollConfiguration,createAndOpenDatabase,createDefaultRenderingPipeline,createMotionBlurPostProcess,createSSAO2RenderingPipeline,createSSRRenderingPipeline,createTAARenderingPipeline,createVLSPostProcess,defaultPipelineCameraConfigurations,disposeDefaultRenderingPipeline,disposeMotionBlurPostProcess,disposeSSAO2RenderingPipeline,disposeSSRRenderingPipeline,disposeTAARenderingPipeline,disposeVLSPostProcess,forceCompileAllSceneMaterials,generateCinematicAnimationGroup,getAllScriptsByClassForObject,getAnimationTypeForObject,getDefaultRenderingPipeline,getFromIndexDB,getMotionBlurPostProcess,getPowerOfTwoUntil,getSSAO2RenderingPipeline,getSSRRenderingPipeline,getScriptByClassForObject,getTAARenderingPipeline,getTextureUrl,getVLSPostProcess,guiFromAsset,isAbstractMesh,isAnyParticleSystem,isArcRotateCamera,isBone,isCamera,isCinematicGroup,isCinematicKey,isCinematicKeyCut,isCinematicKeyEvent,isCinematicSound,isClusteredLightContainer,isDecalMesh,isDirectionalLight,isFreeCamera,isGPUParticleSystem,isGroundMesh,isHemisphericLight,isInstancedMesh,isLight,isMesh,isNode,isNodeFromStaticGroup,isParticleSystem,isPointLight,isScene,isSoundNode,isSpotLight,isSprite,isTexture,isTransformNode,loadMaterialFromFile,loadScene,motionBlurPostProcessCameraConfigurations,nodeFromDescendants,nodeFromScene,normalizeAtlasJson,onKeyboardEvent,onPointerEvent,openIndexDB,parseCinematic,parseCinematicKeyValue,parseDefaultRenderingPipeline,parseKeyFrameAnimations,parseMotionBlurPostProcess,parseRagdollConfiguration,parseSSAO2RenderingPipeline,parseSSRRenderingPipeline,parseTAARenderingPipeline,parseVLSPostProcess,particleSystemFromScene,playSpriteAnimationFromName,preloadAssetsToDatabase,putInIndexDB,registerScriptAssetParser,saveRenderingConfigurationForCamera,sceneAsset,scriptAssetsCache,scriptAssetsParsers,scriptsDictionary,serializeDefaultRenderingPipeline,serializeMotionBlurPostProcess,serializeSSAO2RenderingPipeline,serializeSSRRenderingPipeline,serializeTAARenderingPipeline,serializeVLSPostProcess,setDefaultRenderingPipelineRef,setMotionBlurPostProcessRef,setSSAO2RenderingPipelineRef,setSSRRenderingPipelineRef,setStaticDecalsEnabled,setTAARenderingPipelineRef,setVLSPostProcessRef,setupOfflineProvider,soundFromScene,spriteFromSpriteManager,ssaoRenderingPipelineCameraConfigurations,ssrRenderingPipelineCameraConfigurations,taaRenderingPipelineCameraConfigurations,visibleAsAsset,visibleAsBoolean,visibleAsColor3,visibleAsColor4,visibleAsEntity,visibleAsKeyMap,visibleAsNumber,visibleAsString,visibleAsTexture,visibleAsVector2,visibleAsVector3,vlsPostProcessCameraConfigurations});
|
package/build/src/index.js
CHANGED
|
@@ -14,6 +14,7 @@ export * from "./tools/sound";
|
|
|
14
14
|
export * from "./tools/particle";
|
|
15
15
|
export * from "./tools/ragdoll";
|
|
16
16
|
export * from "./tools/mesh";
|
|
17
|
+
export * from "./tools/node";
|
|
17
18
|
export * from "./rendering/vls";
|
|
18
19
|
export * from "./rendering/ssr";
|
|
19
20
|
export * from "./rendering/taa";
|
|
@@ -36,4 +37,5 @@ export * from "./cinematic/guards";
|
|
|
36
37
|
export * from "./cinematic/cinematic";
|
|
37
38
|
export * from "./loading/database/indexdb";
|
|
38
39
|
export * from "./loading/database/database";
|
|
40
|
+
export * from "./loading/database/preload";
|
|
39
41
|
//# sourceMappingURL=index.js.map
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAE7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,UAAU,CAAC;AAEzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AAEzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAE7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAElC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,UAAU,CAAC;AAEzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AbstractEngine } from "@babylonjs/core/Engines/abstractEngine";
|
|
2
|
+
import { waitUntil } from "../../tools/tools";
|
|
2
3
|
import { loadFile, loadJsonFile } from "../../tools/request";
|
|
3
4
|
import { getFromIndexDB, openIndexDB, putInIndexDB } from "./indexdb";
|
|
4
5
|
/**
|
|
@@ -78,6 +79,10 @@ export class Database {
|
|
|
78
79
|
errorCallback?.();
|
|
79
80
|
}
|
|
80
81
|
}
|
|
82
|
+
close() {
|
|
83
|
+
this._database?.close();
|
|
84
|
+
this._database = null;
|
|
85
|
+
}
|
|
81
86
|
/**
|
|
82
87
|
* Loads an image from the offline support
|
|
83
88
|
* @param url defines the url to load from
|
|
@@ -89,6 +94,7 @@ export class Database {
|
|
|
89
94
|
return;
|
|
90
95
|
}
|
|
91
96
|
let data = null;
|
|
97
|
+
await waitUntil(() => this._manifestVersion !== null);
|
|
92
98
|
const version = await this._getFileVersionForUrl(url);
|
|
93
99
|
if (version !== this._manifestVersion) {
|
|
94
100
|
data = await loadFile(url, "blob");
|
|
@@ -129,7 +135,8 @@ export class Database {
|
|
|
129
135
|
* @param url defines the URL to check the version for
|
|
130
136
|
*/
|
|
131
137
|
async isFileMatchingVersion(url) {
|
|
132
|
-
|
|
138
|
+
const version = await this._getFileVersionForUrl(url);
|
|
139
|
+
return version === this._manifestVersion;
|
|
133
140
|
}
|
|
134
141
|
/**
|
|
135
142
|
* Loads a file from offline support
|
|
@@ -144,6 +151,7 @@ export class Database {
|
|
|
144
151
|
return errorCallback?.();
|
|
145
152
|
}
|
|
146
153
|
let data = null;
|
|
154
|
+
await waitUntil(() => this._manifestVersion !== null);
|
|
147
155
|
const version = await this._getFileVersionForUrl(url);
|
|
148
156
|
if (version !== this._manifestVersion) {
|
|
149
157
|
data = await loadFile(url, useArrayBuffer ? "arraybuffer" : "text", progressCallBack);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../src/loading/database/database.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../src/loading/database/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { loadJsonFile } from "../../tools/request";
|
|
2
|
+
import { createAndOpenDatabase } from "./database";
|
|
3
|
+
const supportedJsonExtensions = ["babylon", "json"];
|
|
4
|
+
const supportedImageExtensions = ["jpg", "jpeg", "png", "bmp", "webp"];
|
|
5
|
+
const supportedBinaryExtensions = ["bin", "babylonbinarymeshdata", "mp3", "wav", "ktx", "ktx2"];
|
|
6
|
+
const allSupportedExtensions = [...supportedJsonExtensions, ...supportedImageExtensions, ...supportedBinaryExtensions];
|
|
7
|
+
/**
|
|
8
|
+
* Preloads the assets used by the scenes into the database.
|
|
9
|
+
* This can be used to preload the assets before starting the application or to update the database with new assets after a new deployment.
|
|
10
|
+
* This is particularly useful to improve loading times when the application with a slow network connection, as the assets will be loaded from the local database instead of being downloaded from the server each time.
|
|
11
|
+
* @param databaseName defines the name of the database to create (if doesn't exists) and open and save files to it
|
|
12
|
+
* @param rootUrl defines the root url to load the scenes used files list and the scene manifest files from. Typically "/scenes/".
|
|
13
|
+
* @param options defines the options for preloading assets, including a callback function to be called with the progress of the asset loading process
|
|
14
|
+
*/
|
|
15
|
+
export async function preloadAssetsToDatabase(databaseName, rootUrl, options) {
|
|
16
|
+
const promises = [];
|
|
17
|
+
const scenesUsedFiles = await loadJsonFile(`${rootUrl}scenes-used-files.json`);
|
|
18
|
+
let loadedCount = 0;
|
|
19
|
+
const supportedKtxFormat = options?.engine?.texturesSupported[0];
|
|
20
|
+
const totalLength = Object.values(scenesUsedFiles).reduce((sum, files) => sum + files.length, 0);
|
|
21
|
+
function notifyProgress(resolve) {
|
|
22
|
+
++loadedCount;
|
|
23
|
+
options?.onProgress?.(loadedCount / totalLength);
|
|
24
|
+
resolve?.();
|
|
25
|
+
}
|
|
26
|
+
for (const [sceneName, files] of Object.entries(scenesUsedFiles)) {
|
|
27
|
+
const babylonSceneName = sceneName.replace(".scene", ".babylon");
|
|
28
|
+
const database = await createAndOpenDatabase(databaseName, `${rootUrl}${babylonSceneName}`);
|
|
29
|
+
if (!database) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
for (let i = 0, len = files.length; i < len; ++i) {
|
|
33
|
+
const file = files[i];
|
|
34
|
+
const extension = file.split(".").pop()?.toLowerCase();
|
|
35
|
+
if (!extension) {
|
|
36
|
+
notifyProgress();
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (extension === "ktx") {
|
|
40
|
+
if (!supportedKtxFormat) {
|
|
41
|
+
notifyProgress();
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
else if (!file.endsWith(supportedKtxFormat)) {
|
|
45
|
+
notifyProgress();
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (promises.length > 300) {
|
|
50
|
+
try {
|
|
51
|
+
await Promise.all(promises);
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
// Catch silently.
|
|
55
|
+
}
|
|
56
|
+
promises.splice(0, promises.length);
|
|
57
|
+
}
|
|
58
|
+
const assetUrl = `${rootUrl}${file}`;
|
|
59
|
+
if (allSupportedExtensions.includes(extension)) {
|
|
60
|
+
promises.push(new Promise(async (resolve) => {
|
|
61
|
+
if (await database.isFileMatchingVersion(assetUrl)) {
|
|
62
|
+
return notifyProgress(resolve);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
if (supportedImageExtensions.includes(extension)) {
|
|
66
|
+
if (!options?.disableImages) {
|
|
67
|
+
await database.saveImage(assetUrl);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else if (supportedBinaryExtensions.includes(extension)) {
|
|
71
|
+
await database.saveFile(assetUrl, true);
|
|
72
|
+
}
|
|
73
|
+
else if (supportedJsonExtensions.includes(extension)) {
|
|
74
|
+
await database.saveFile(assetUrl, false);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
// Catch silently.
|
|
79
|
+
}
|
|
80
|
+
notifyProgress(resolve);
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
await Promise.all(promises);
|
|
85
|
+
database.close();
|
|
86
|
+
}
|
|
87
|
+
await Promise.all(promises);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=preload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preload.js","sourceRoot":"","sources":["../../../../src/loading/database/preload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { SceneComponentConstants } from "@babylonjs/core/sceneComponent";
|
|
2
|
+
import { ShadowGenerator } from "@babylonjs/core/Lights/Shadows/shadowGenerator";
|
|
2
3
|
import { GetParser, AddParser } from "@babylonjs/core/Loading/Plugins/babylonFileParser.function";
|
|
4
|
+
import { RegisterShadowGeneratorSceneComponent } from "@babylonjs/core/Lights/Shadows/shadowGeneratorSceneComponent.pure";
|
|
3
5
|
import { getPowerOfTwoUntil } from "../tools/scalar";
|
|
4
6
|
let registered = false;
|
|
5
7
|
export function registerShadowGeneratorParser() {
|
|
@@ -7,6 +9,7 @@ export function registerShadowGeneratorParser() {
|
|
|
7
9
|
return;
|
|
8
10
|
}
|
|
9
11
|
registered = true;
|
|
12
|
+
RegisterShadowGeneratorSceneComponent(ShadowGenerator);
|
|
10
13
|
const shadowsGeneratorParser = GetParser(SceneComponentConstants.NAME_SHADOWGENERATOR);
|
|
11
14
|
AddParser("ShadowGeneratorEditorPlugin", (parsedData, scene, container, rootUrl) => {
|
|
12
15
|
const savedShadowGenerators = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadows.js","sourceRoot":"","sources":["../../../src/loading/shadows.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,4DAA4D,CAAC;
|
|
1
|
+
{"version":3,"file":"shadows.js","sourceRoot":"","sources":["../../../src/loading/shadows.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,4DAA4D,CAAC;AAClG,OAAO,EAAE,qCAAqC,EAAE,MAAM,mEAAmE,CAAC;AAE1H,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,MAAM,UAAU,6BAA6B;IAC5C,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IAED,UAAU,GAAG,IAAI,CAAC;IAElB,qCAAqC,CAAC,eAAe,CAAC,CAAC;IAEvD,MAAM,sBAAsB,GAAG,SAAS,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IAEvF,SAAS,CAAC,6BAA6B,EAAE,CAAC,UAAe,EAAE,KAAY,EAAE,SAAyB,EAAE,OAAe,EAAE,EAAE;QACtH,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAExD,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,eAAoB,EAAE,EAAE;YAC7D,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;YAEvE,IAAI,KAAK,CAAC,qBAAqB,KAAK,MAAM,EAAE,CAAC;gBAC5C,QAAQ,KAAK,CAAC,qBAAqB,EAAE,CAAC;oBACrC,KAAK,QAAQ;wBACZ,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,GAAG,GAAG,CAAC;wBACxD,MAAM;oBAEP,KAAK,KAAK;wBACT,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;wBACzD,MAAM;oBAEP,KAAK,UAAU;wBACd,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;wBAC1D,MAAM;gBACR,CAAC;gBAED,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YACtF,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,sBAAsB,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAEhE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9B,MAAM,eAAe,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,eAAe,EAAE,YAAY,EAAE,CAAC;YAElD,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,EAAE,GAAG,eAAgB,CAAC,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnD,IAAI,YAAY,EAAE,CAAC;oBAClB,eAAgB,CAAC,eAAe,GAAG,YAAY,CAAC;gBACjD,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
package/build/src/tools/mesh.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { isMesh } from "./guards";
|
|
2
|
+
import { isNodeFromStaticGroup } from "./node";
|
|
2
3
|
export function configureMeshDistanceOrScreenCoverage(scene) {
|
|
3
4
|
scene.meshes.forEach((mesh) => {
|
|
4
|
-
if (isMesh(mesh)) {
|
|
5
|
-
|
|
6
|
-
if (lod.mesh) {
|
|
7
|
-
lod.mesh.originalDistanceOrScreenCoverage = lod.distanceOrScreenCoverage;
|
|
8
|
-
}
|
|
9
|
-
});
|
|
5
|
+
if (!isMesh(mesh)) {
|
|
6
|
+
return;
|
|
10
7
|
}
|
|
8
|
+
mesh.getLODLevels().forEach((lod) => {
|
|
9
|
+
if (lod.mesh) {
|
|
10
|
+
lod.mesh.originalDistanceOrScreenCoverage = lod.distanceOrScreenCoverage;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
11
13
|
});
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
@@ -18,25 +20,46 @@ export function configureMeshDistanceOrScreenCoverage(scene) {
|
|
|
18
20
|
*/
|
|
19
21
|
export function applyMeshesLODQuality(quality, scene) {
|
|
20
22
|
scene.meshes.forEach((mesh) => {
|
|
21
|
-
if (isMesh(mesh)) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
23
|
+
if (!isMesh(mesh)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
mesh.getLODLevels().forEach((lod) => {
|
|
27
|
+
if (!lod.mesh?.originalDistanceOrScreenCoverage) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
switch (quality) {
|
|
31
|
+
case "very-low":
|
|
32
|
+
lod.distanceOrScreenCoverage = lod.mesh.originalDistanceOrScreenCoverage * 0.125;
|
|
33
|
+
break;
|
|
34
|
+
case "low":
|
|
35
|
+
lod.distanceOrScreenCoverage = lod.mesh.originalDistanceOrScreenCoverage * 0.25;
|
|
36
|
+
break;
|
|
37
|
+
case "medium":
|
|
38
|
+
lod.distanceOrScreenCoverage = lod.mesh.originalDistanceOrScreenCoverage * 0.5;
|
|
39
|
+
break;
|
|
40
|
+
case "high":
|
|
41
|
+
lod.distanceOrScreenCoverage = lod.mesh.originalDistanceOrScreenCoverage;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns wether or not the given mesh is a decal mesh created in the editor.
|
|
49
|
+
* @param mesh defines the reference to the mesh to check the nature of.
|
|
50
|
+
*/
|
|
51
|
+
export function isDecalMesh(mesh) {
|
|
52
|
+
return (mesh.metadata?.decal ?? null) !== null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Sets wether or not the decal meshes created in the editor and belonging to a static group are enabled in the given scene.
|
|
56
|
+
* @param enabled defines wether or not the decal meshes should be enabled.
|
|
57
|
+
* @param scene defines the scene to update the decal meshes in.
|
|
58
|
+
*/
|
|
59
|
+
export function setStaticDecalsEnabled(enabled, scene) {
|
|
60
|
+
scene.meshes.forEach((mesh) => {
|
|
61
|
+
if (isDecalMesh(mesh) && isNodeFromStaticGroup(mesh)) {
|
|
62
|
+
mesh.setEnabled(enabled);
|
|
40
63
|
}
|
|
41
64
|
});
|
|
42
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh.js","sourceRoot":"","sources":["../../../src/tools/mesh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mesh.js","sourceRoot":"","sources":["../../../src/tools/mesh.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAgB/C,MAAM,UAAU,qCAAqC,CAAC,KAAY;IACjE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,gCAAgC,GAAG,GAAG,CAAC,wBAAwB,CAAC;YAC1E,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAmC,EAAE,KAAY;IACtF,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,gCAAgC,EAAE,CAAC;gBACjD,OAAO;YACR,CAAC;YAED,QAAQ,OAAO,EAAE,CAAC;gBACjB,KAAK,UAAU;oBACd,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;oBACjF,MAAM;gBAEP,KAAK,KAAK;oBACT,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;oBAChF,MAAM;gBAEP,KAAK,QAAQ;oBACZ,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC,IAAI,CAAC,gCAAgC,GAAG,GAAG,CAAC;oBAC/E,MAAM;gBAEP,KAAK,MAAM;oBACV,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC;oBACzE,MAAM;YACR,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC7C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,KAAY;IACpE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns wether or not the given node is a descendant of a transform node set as static group.
|
|
3
|
+
* @param node defines the reference to the node to check the ancestors.
|
|
4
|
+
*/
|
|
5
|
+
export function isNodeFromStaticGroup(node) {
|
|
6
|
+
let parent = node;
|
|
7
|
+
while (parent) {
|
|
8
|
+
if (parent.metadata?.isStaticGroup) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
parent = parent.parent;
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/tools/node.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAU;IAC/C,IAAI,MAAM,GAAgB,IAAI,CAAC;IAE/B,OAAO,MAAM,EAAE,CAAC;QACf,IAAI,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC"}
|
package/build/src/tools/tools.js
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wait for a given amount of time expressed in milliseconds.
|
|
3
|
+
* @param timeMs The time to wait in milliseconds.
|
|
4
|
+
* @returns A promise that resolves after the given amount of time.
|
|
5
|
+
*/
|
|
6
|
+
export function waitMs(timeMs) {
|
|
7
|
+
return new Promise((resolve) => {
|
|
8
|
+
setTimeout(() => resolve(), timeMs);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Wait until a given predicate returns true.
|
|
13
|
+
* @param predicate Defines the predicate to wait for.
|
|
14
|
+
*/
|
|
15
|
+
export async function waitUntil(predicate) {
|
|
16
|
+
while (!predicate()) {
|
|
17
|
+
await waitMs(150);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
1
20
|
/**
|
|
2
21
|
* Clones the given JavaScript object. This function does not handle cyclic references.
|
|
3
22
|
* @param source defines the reference to the JavaScript object to clone.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAI,MAAS;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,MAAc;IACpC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACpC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAAoB;IACnD,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAI,MAAS;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -14,6 +14,7 @@ export * from "./tools/sound";
|
|
|
14
14
|
export * from "./tools/particle";
|
|
15
15
|
export * from "./tools/ragdoll";
|
|
16
16
|
export * from "./tools/mesh";
|
|
17
|
+
export * from "./tools/node";
|
|
17
18
|
export * from "./rendering/vls";
|
|
18
19
|
export * from "./rendering/ssr";
|
|
19
20
|
export * from "./rendering/taa";
|
|
@@ -36,3 +37,4 @@ export * from "./cinematic/guards";
|
|
|
36
37
|
export * from "./cinematic/cinematic";
|
|
37
38
|
export * from "./loading/database/indexdb";
|
|
38
39
|
export * from "./loading/database/database";
|
|
40
|
+
export * from "./loading/database/preload";
|
|
@@ -40,6 +40,7 @@ export declare class Database implements IOfflineProvider {
|
|
|
40
40
|
* @param errorCallback defines the callback to call on error
|
|
41
41
|
*/
|
|
42
42
|
open(successCallback?: () => void, errorCallback?: () => void): Promise<void>;
|
|
43
|
+
close(): void;
|
|
43
44
|
/**
|
|
44
45
|
* Loads an image from the offline support
|
|
45
46
|
* @param url defines the url to load from
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AbstractEngine } from "@babylonjs/core/Engines/abstractEngine";
|
|
2
|
+
export interface IPreloadAssetsToDatabaseOptions {
|
|
3
|
+
engine?: AbstractEngine;
|
|
4
|
+
/**
|
|
5
|
+
* Defines wether to disable loading and saving images to the database.
|
|
6
|
+
* This is particularly useful when the application supports compressed KTX textures. So only KTX textures are stored.
|
|
7
|
+
*/
|
|
8
|
+
disableImages?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* A callback function that is called with the progress of the asset loading process, as a value between 0 and 1.
|
|
11
|
+
* @param progress defines the progress of the asset loading process, as a value between 0 and 1.
|
|
12
|
+
*/
|
|
13
|
+
onProgress?: (progress: number) => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Preloads the assets used by the scenes into the database.
|
|
17
|
+
* This can be used to preload the assets before starting the application or to update the database with new assets after a new deployment.
|
|
18
|
+
* This is particularly useful to improve loading times when the application with a slow network connection, as the assets will be loaded from the local database instead of being downloaded from the server each time.
|
|
19
|
+
* @param databaseName defines the name of the database to create (if doesn't exists) and open and save files to it
|
|
20
|
+
* @param rootUrl defines the root url to load the scenes used files list and the scene manifest files from. Typically "/scenes/".
|
|
21
|
+
* @param options defines the options for preloading assets, including a callback function to be called with the progress of the asset loading process
|
|
22
|
+
*/
|
|
23
|
+
export declare function preloadAssetsToDatabase(databaseName: string, rootUrl: string, options?: IPreloadAssetsToDatabaseOptions): Promise<void>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Scene } from "@babylonjs/core/scene";
|
|
2
|
+
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
|
|
2
3
|
import { PhysicsAggregate } from "@babylonjs/core/Physics/v2/physicsAggregate";
|
|
3
4
|
import { SceneLoaderQualitySelector } from "../loading/loader";
|
|
4
5
|
declare module "@babylonjs/core/Meshes/abstractMesh" {
|
|
@@ -19,3 +20,14 @@ export declare function configureMeshDistanceOrScreenCoverage(scene: Scene): voi
|
|
|
19
20
|
* @see `SceneLoaderQualitySelector` for more information on the available quality levels.
|
|
20
21
|
*/
|
|
21
22
|
export declare function applyMeshesLODQuality(quality: SceneLoaderQualitySelector, scene: Scene): void;
|
|
23
|
+
/**
|
|
24
|
+
* Returns wether or not the given mesh is a decal mesh created in the editor.
|
|
25
|
+
* @param mesh defines the reference to the mesh to check the nature of.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isDecalMesh(mesh: AbstractMesh): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Sets wether or not the decal meshes created in the editor and belonging to a static group are enabled in the given scene.
|
|
30
|
+
* @param enabled defines wether or not the decal meshes should be enabled.
|
|
31
|
+
* @param scene defines the scene to update the decal meshes in.
|
|
32
|
+
*/
|
|
33
|
+
export declare function setStaticDecalsEnabled(enabled: boolean, scene: Scene): void;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Node } from "@babylonjs/core/node";
|
|
2
|
+
/**
|
|
3
|
+
* Returns wether or not the given node is a descendant of a transform node set as static group.
|
|
4
|
+
* @param node defines the reference to the node to check the ancestors.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isNodeFromStaticGroup(node: Node): boolean;
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wait for a given amount of time expressed in milliseconds.
|
|
3
|
+
* @param timeMs The time to wait in milliseconds.
|
|
4
|
+
* @returns A promise that resolves after the given amount of time.
|
|
5
|
+
*/
|
|
6
|
+
export declare function waitMs(timeMs: number): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Wait until a given predicate returns true.
|
|
9
|
+
* @param predicate Defines the predicate to wait for.
|
|
10
|
+
*/
|
|
11
|
+
export declare function waitUntil(predicate: () => any): Promise<void>;
|
|
1
12
|
/**
|
|
2
13
|
* Clones the given JavaScript object. This function does not handle cyclic references.
|
|
3
14
|
* @param source defines the reference to the JavaScript object to clone.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "babylonjs-editor-tools",
|
|
3
|
-
"version": "5.4.1
|
|
3
|
+
"version": "5.4.1",
|
|
4
4
|
"description": "Babylon.js Editor Tools is a set of tools to help you create, edit and manage your Babylon.js scenes made using the Babylon.js Editor",
|
|
5
5
|
"productName": "Babylon.js Editor Tools",
|
|
6
6
|
"scripts": {
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"typings": "declaration/src/index.d.ts",
|
|
26
26
|
"license": "(Apache-2.0)",
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@babylonjs/addons": "9.
|
|
29
|
-
"@babylonjs/core": "9.
|
|
30
|
-
"@babylonjs/gui": "9.
|
|
28
|
+
"@babylonjs/addons": "9.9.1",
|
|
29
|
+
"@babylonjs/core": "9.9.1",
|
|
30
|
+
"@babylonjs/gui": "9.9.1",
|
|
31
31
|
"@vitest/coverage-v8": "4.0.17",
|
|
32
32
|
"esbuild": "0.27.2",
|
|
33
33
|
"typescript": "5.9.3",
|